render react native 后调用的函数

Function called after render react native

我有一个加载函数,可以将我的数据加载到我的 ListView 数据源,正如您可能知道的那样,ListView 不会总是随着状态的变化而重新呈现,我需要强制更新它这个加载函数通过按钮调用时效果很好,但我想要它可以自动加载,但在 componentwill/did 挂载函数中调用 forceupdate 不可用我该怎么办?我只想在渲染后稍微延迟调用我的函数。问题是 this.props.navigation 不是渲染前的对象,不能在 componentwill/did 挂载中使用。

 //   UNSAFE_componentWillMount() {
//   this.makeScene();
// }

makeScene(){
var count = Object.keys(window.contents[this.props.navigation.getParam('name')]).length;
for(let i = 0 ; i < count ; i ++){
  global.subnum[i] = i;
  global.lowersubjects[i] = window.contents[this.props.navigation.getParam('name')][i].subject;
  global.lowerdescriptions[i] = window.contents[this.props.navigation.getParam('name')][i].description;
  global.lowerimageurl[i] = window.contents[this.props.navigation.getParam('name')][i].imageurl;
  global.author[i] = window.contents[this.props.navigation.getParam('name')][i].author;
  global.eventdate[i] = window.contents[this.props.navigation.getParam('name')][i].eventdate;
}
this.setState({
  subnum : global.subnum
});
this.forceUpdate();
}    

取消注释会导致我的应用程序按钮和渲染停止工作。

3 件事:

首先,如果指定字段为空或不存在,则 getParam 缺少默认值参数:

var name = this.props.navigation.getParam('name', 'defaultName')

有了名称,您就不必一直调用它来访问您的数组单元格。

其次,你是什么人window.contents?

最后,如果组件的状态或道具发生变化,每次 this.setState() 调用都会导致视图呈现。您应该在 componentDidMount() 中调用您的过程,是的,this.props.navigation 应该可以访问 componentDidMount(),因为我想您的组件在导航器中...