我使用这样的代码,它对我来说不起作用
componentWillRecieveProps(nextProps,nextState){
if(nextProps.navigation.state != this.state){
//here calling api
}
}
我认为这个问题应该更加详细,以帮助解决您的问题。根据您的问题,您可能会要求任一
- 如果数据发生更改,如何重新加载页面
- 导航状态更改时如何重新加载页面
如果数据发生更改,如何重新加载页面
在这种情况下,您不需要添加"componentWillRecieveProps"。你可以简单地在像这样的渲染方法中检查一个值
{data.items.length && <ItemLIstCustomComponent />}
或
{data.items.length ? <ItemLIstCustomComponent /> : <EmptyMessageComponent />}
您可以在react native中查看条件渲染。如果重新渲染仍然没有发生?那么您更新状态/数据的方式不正确。请确保复制对象并更新现有对象。
要理解这一点,请阅读有关可变对象的内容,并对重新渲染进行浅层检查。或者这可能有助于
导航状态更改时如何重新加载页面
我认为调用另一个API或在componentWillRecieveProps
中做任何与状态更改相关的事情不是一个好的做法。您可以创建一个新屏幕,在该屏幕上导航并调用componentDidMount
中的API。如果您不使用任何导航库,可以尝试React导航。