应用程序流:
ComponentOne:
ComponentTwo:
我将状态从一个组件传递到另一个组件,称为"loading“的状态从"true”开始,当从api接收响应时,状态应该更改为"false“,但是即使在ComponentOne中发生了变化,ComponentTwo仍然显示旋转器.
这就是我如何导航到第二个屏幕,并通过它传递状态。
this.props.navigation.navigate('ComponentTwo', {loading: this.state.loading});这就是我接收状态和执行条件呈现的方式,旋转器应该一直显示,直到从api接收到响应为止,然而,即使在接收到数据响应时,它也一直在旋转。
{
this.props.navigation.state.params.loading ?
<Spinner/> :
<Text>Display response from api when it is received</Text>
}为什么这不管用?为什么状态不改变在第二个组件和呈现结果,相反,它继续加载永远。您不能将状态从一个组件传递到另一个组件并期望它发生变化吗?
编辑:在收到来自api的响应后,“加载”设置为"false“,在此之前将导航到ComponentTwo,因此我希望旋转器在收到数据之前显示。
Edit2:,有人知道我如何使用redux来完成这个任务吗?我在项目中有redux,但是不知道如何做,当我的变量从api获得一个值作为响应时,loading将被设置为false。
发布于 2018-03-28 11:34:39
我不太确定,导航参数就像/ props一样工作。这是一条单向的街道,通过对角线到下一个屏幕。这些不会更新。
相反,您应该有一个组件包装这两个屏幕传递道具下来。如果您更新包装组件的状态,这将更新。
包装可以有一个状态的照片,一旦它被更新的图像url,它将触发一个改进机和道具将涓滴下来的附加组件。
希望这能有所帮助。
https://stackoverflow.com/questions/49531490
复制相似问题