Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React Native FlatList不使用自定义renderItem重新渲染_Javascript_Reactjs_Listview_React Native_React Native Flatlist - Fatal编程技术网

Javascript React Native FlatList不使用自定义renderItem重新渲染

Javascript React Native FlatList不使用自定义renderItem重新渲染,javascript,reactjs,listview,react-native,react-native-flatlist,Javascript,Reactjs,Listview,React Native,React Native Flatlist,我有一个平面列表,它在使用普通的旧标记时可以正常工作,但在renderItem中使用自定义组件时,在更改this.state.dayOfYear时,平面列表将不会重新渲染。在应用程序加载时,当我设置this.state.dayOfYear时,它会正确加载。但当我再次更改状态时,它不会更改平面列表 扁平表代码 自定义renderItem DayView.js 我非常确定,您的DayRow项目是在设置props.content之前构建的,您需要在安装组件时获取这些道具。尝试添加以下内容: compo

我有一个平面列表,它在使用普通的旧标记时可以正常工作,但在renderItem中使用自定义组件时,在更改this.state.dayOfYear时,平面列表将不会重新渲染。在应用程序加载时,当我设置this.state.dayOfYear时,它会正确加载。但当我再次更改状态时,它不会更改平面列表

扁平表代码

自定义renderItem DayView.js

我非常确定,您的DayRow项目是在设置props.content之前构建的,您需要在安装组件时获取这些道具。尝试添加以下内容:

componentWillMount() {
  const { content } = this.props;
  this.setState({content: content});
}
编辑 我错过了关于重新渲染的部分。。。 基本上,您需要一段代码,当其道具发生变化时更新组件状态,react components有另一个类似于componentWillMount的功能,称为componentWillReceiveProps,请尝试:


我有同样的问题,但使用extraData={this.state}解决了

完整的代码在这里

<FlatList
  style={styles.listView}
  data={this.state.readingArray}
  extraData={this.state}
  renderItem=
  {({item})=>

很好的捕获,但没有骰子:@jaytj95我在OP中错过了一些东西。请检查我的编辑。效果很好!所以,为了正确理解这一点,当我更新状态时,平面列表正在重新使用已经渲染的组件?我的印象是,它将用新组件替换renderItem中的旧组件,用新组件替换旧的DayrowDayRows@jaytj95我认为FlatList实现有某种优化,可以在可能的情况下使用先前构造的项。但是我不确定所有的细节。thanx@tay_rex。componentWillReceiveProps非常适合我。
componentWillMount() {
  const { content } = this.props;
  this.setState({content: content});
}
componentWillReceiveProps(nextProps) {
  const { content } = nextProps;
  this.setState({content: content});
}
<FlatList
  style={styles.listView}
  data={this.state.readingArray}
  extraData={this.state}
  renderItem=
  {({item})=>