React Native 刷新屏幕/组件/改变状态
Posted
技术标签:
【中文标题】React Native 刷新屏幕/组件/改变状态【英文标题】:React Native refresh screen / component / change state 【发布时间】:2018-08-06 10:15:00 【问题描述】:我正在使用 react-native、嵌套的 react-navigation、SectionLists、ActionSheet 等,而且我很难设置一种体面的方式来刷新组件/屏幕。由于我有几个不同的案例,我也尝试了不同的方法,但没有成功。
示例: - 当从一个屏幕转换到另一个屏幕以更改状态时,在导航器中发送回调函数作为参数。 - 将 AsyncStorage.getItem 直接分配给状态变量(例如:在 ListView 上使用)并期望它刷新。
我在 react-navigation git repo 中看到了很多问题(主要是关于如何刷新屏幕),以及最近对项目提出的关于未来版本的最佳方法的建议,这让我问这是否是已经到位了。
我可以说,我已经成功使用 redux 来检查连接状态 (NetInfo),虽然我还不能将相同的想法移植到不同的方案中,但我认为这是我最好的方法。
目前我有一个方案,如果解决了,我相信会回答我的一些问题。例如:
我的主屏幕中有一个新闻列表,我的抽屉导航器中有一些选项,我希望在单击时对主列表进行排序,而不必像我想要的那样调用 navigate('screen_name') to, 点击后抽屉仍然保持打开状态。
对此最好的方法是什么? 提前致谢!
【问题讨论】:
【参考方案1】:您可以采用的一种方法是: 单击 DrawerNavigator 项时,您可以调度一个操作,该操作将通过一个值更改状态。例如:过滤器:。该商店值可以作为道具传递到您的主屏幕,其中包含一个基于该值进行过滤的逻辑。
我没有使用过 DrawerNavigator,但我觉得可以阻止抽屉导航中每个项目上的 onPress,并且可以在同一位置调用操作。
【讨论】:
您好,感谢您的反馈!真的很感激。是的,那将使用 redux,我认为这绝对是解决这个问题的最佳方法。确切地说,只要不涉及“导航到”操作,我就可以让抽屉保持打开状态。必须全力以赴。我还刚刚发现,我可以通过使用 SectionList / FlatList 中的“extraData”属性来解决其他情况。以上是关于React Native 刷新屏幕/组件/改变状态的主要内容,如果未能解决你的问题,请参考以下文章