首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过状态不变

通过状态不变
EN

Stack Overflow用户
提问于 2018-03-28 09:57:59
回答 1查看 63关注 0票数 0

应用程序流:

ComponentOne:

  1. 用电话拍照
  2. 将照片发送到api
  3. 导航到ComponentTwo

ComponentTwo:

  1. 渲染组件
  2. 现在在ComponentOne中接收来自ComponentTwo的响应,在ComponentTwo呈现之后。(导致组件无法显示响应,因为它是在呈现组件之后接收到的)所期望的结果是加载旋转器将旋转,直到从api接收到响应,并在收到响应时立即在ComponentTwo中显示它。

我将状态从一个组件传递到另一个组件,称为"loading“的状态从"true”开始,当从api接收响应时,状态应该更改为"false“,但是即使在ComponentOne中发生了变化,ComponentTwo仍然显示旋转器.

这就是我如何导航到第二个屏幕,并通过它传递状态。

代码语言:javascript
复制
this.props.navigation.navigate('ComponentTwo', {loading: this.state.loading});

这就是我接收状态和执行条件呈现的方式,旋转器应该一直显示,直到从api接收到响应为止,然而,即使在接收到数据响应时,它也一直在旋转。

代码语言:javascript
复制
{
  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。

EN

回答 1

Stack Overflow用户

发布于 2018-03-28 11:34:39

我不太确定,导航参数就像/ props一样工作。这是一条单向的街道,通过对角线到下一个屏幕。这些不会更新。

相反,您应该有一个组件包装这两个屏幕传递道具下来。如果您更新包装组件的状态,这将更新。

包装可以有一个状态的照片,一旦它被更新的图像url,它将触发一个改进机和道具将涓滴下来的附加组件。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49531490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档