首页 文章

React Native Flatlist不会重新渲染

提问于
浏览
0

我在我的React Native应用程序中使用Flatlist . 我的应用程序将从服务器获取数据并在FlatList上显示 . 道具/州通过Redux和Redux-saga更新

现在我遇到一个问题,即在从服务器获取数据后,平面列表不会更新/不调用renderItem . 我尝试设置extraData道具(像其他建议stackoverflowdocument)并确保Flatlist的大小大于零但没有运气 . 我还尝试设置一些预定义的数据,平板列表完美地显示它,但在新数据出现后没有更新 . 我确实检查了数据更新后调用_listView函数但_listViewRenderItem不是 .

下面是我的代码 . 我将非常感谢任何帮助 . 谢谢

componentWillReceiveProps(nextProps) {
   var index = nextProps.bintype_ids.indexOf(nextProps.bin.id)
   if (index != -1) {
      _data = nextProps.wastetypes[index]
   } else {
      _data = { allow : [], not_allow : []}
   }

   const newState = {
      index : this.state.index + 1,
      change : !this.state.change,
      wastetypes : _data
   }

   this.setState(newState)
}

_listViewRenderItem(item) {
   return (
     <BinGuideListItem item={item} />
   )
}

_listView(data) {

  return (
      <FlatList style={css.segmentList}
          data={data}
          renderItem={({ item }) => {this._listViewRenderItem(item)}}
          keyExtractor={(item) => item.id}
          ItemSeparatorComponent={this._renderSeparator}
          extraData = {this.state}
      />
  );
}

render(){
  return (
    <View>
      <SegmentControl
         values={['Allow', 'Not Allowed']}
         tabContents={[
            this._listView(this.state.wastetypes.allow),
            this._listView(this.state.wastetypes.not_allow),    
         ]}
         style={{
            container: css.segmentContainer,
            contentContainer : css.contentContainer,
            tabText: css.segmentTabText,
            tab: css.segmentTab,
         }}
         colorsByTab={[
            common.COLOR_BIN_GUIDE_ALLOWED,
            common.COLOR_BIN_GUIDE_NOT_ALLOWED
         ]}
         borderRadius={0.1}
      />
    </View>
  )  
 }
}

2 回答

  • 0

    将以下代码替换为

    _data = nextProps.wastetypes[index]
    

    THIS

    _data = JSON.parse(JSON.stringify( nextProps.wastetypes[index]));
    
  • 0

    在深入研究问题并将我的列表与我的段控件分开之后,我发现该问题依赖于段控制 . 我的所有列表组件都属于段控制的tabContent状态 . 它似乎不起作用,因为段控件保持渲染旧选项卡内容 . 所以现在我的解决方案是处理道具改变(当标签内容改变时)和更新标签内容状态的段控制 .

相关问题