繁体   English   中英

在当前屏幕中未调用componentWillReceiveProps而不是响应本机[重复]

componentWillReceiveProps is invoked not in the current screen react native [duplicate]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这个问题已经在这里有了答案:

我正在使用react-navigationcreateStackNavigatior处理应用程序中的导航。 在主加载屏幕中,我使用componentWillReceiveProps来处理来自我的reducer的结果。

当我离开加载屏幕导航并且每当在不同屏幕中更新相同道具时,都会发生问题,尽管我希望它根本不会运行,但在已经从其导航的主加载屏幕中调用componentWillReceiveProps

有没有办法在应该卸载该功能后使其无法启动?

1 个回复

当您从屏幕navigatestack navigator中的屏幕时,先前的屏幕保持安装状态

您可以使用this.props.navigation.replace('routeName')来完全卸载屏幕,而不必使用navigate也可以防止前一个屏幕更新:

来自React Navigation的官方文档:

React Navigation向订阅它们的屏幕组件发出事件。 您可以订阅四个不同的事件: willFocuswillBlurdidFocusdidBlur API参考中阅读有关它们的更多信息。

因此,请尝试使用willBlur来阻止您的组件触发componentWillRecieveProps事件。 您可以设置一个在调用willBlur时为false的标志,并在接收道具并阻止任何更新触发时willBlur进行检查

1 未调用componentWillReceiveProps中的Axios.all

使用React和Redux,我需要等待我所有的动作完成才能更新组件状态。 阅读Axios文档后,我发现axios.all可以收集我所有的操作并等待所有操作解决(基本上,我正在调用API n次以获取有关n项的信息)。 问题是axios.all .then函数中的console.log根本不返回 ...

2 未调用componentWillReceiveProps

我正在更新状态消息和TalkContent的ID ,并试图将其传递给适当的Talks子代(它本身是TalkContent的子代)。 谈话内容 会谈 谈论 但是,即使状态消息和TalkContent(父组件)的ID更新了,Talk的componentWillRecei ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM