React native React Native:如何在切换回基于状态的选项卡时触发远程提取
我正在构建一个包含两个选项卡的应用程序(React native React Native:如何在切换回基于状态的选项卡时触发远程提取,react-native,react-redux,react-navigation,React Native,React Redux,React Navigation,我正在构建一个包含两个选项卡的应用程序(react导航)。我不熟悉react和redux,我仍在努力思考如何在组件之间进行通信,而不创建太多不必要的依赖关系 选项卡A:主要组件是通过远程API获取数据。为此,我使用了react redux和redux thunk。数据保存在中央存储中,因为它用于不同组件(选项卡A和选项卡B)的按钮状态。按下按钮将调用Thunk,该Thunk处理异步API调用以更新服务器,然后分派操作以更新存储 选项卡B:也通过远程API获取其数据,但通过组件的状态进行设置。我不
react导航
)。我不熟悉react
和redux
,我仍在努力思考如何在组件之间进行通信,而不创建太多不必要的依赖关系
选项卡A:主要组件是通过远程API获取数据。为此,我使用了react redux
和redux thunk
。数据保存在中央存储中,因为它用于不同组件(选项卡A和选项卡B)的按钮状态。按下按钮将调用Thunk,该Thunk处理异步API调用以更新服务器,然后分派操作以更新存储
选项卡B:也通过远程API获取其数据,但通过组件的状态进行设置。我不认为把它也放到redux存储中有什么意义,因为它不是跨组件共享的。这里还使用选项卡A中的按钮组件
我试图实现的目标:当redux存储区内的状态发生变化时(按钮的onPress()
发送操作),选项卡A和选项卡B都需要通过远程API重新获取,但仅在以下情况下:
- 从一个选项卡切换到另一个选项卡需要在目标选项卡内重新获取。然后,只有在切换回第一个选项卡时,才会触发重新获取
我所考虑的:
将tabAinvalidated
和tabBinvalidated
标志添加到redux存储。然后,我在两个选项卡中收听willFocus
事件。然后,如果相应的选项卡被标记为无效,我将重新获取。这可能会起作用,但我不确定在redux存储中保留单个组件的更新标志是否被视为反模式
Q:有没有更好的方法?react native中通知组件需要从远程API重新加载数据的最佳方式是什么?我想我自己也想出了一个解决方案。现在,我不再为每个选项卡使用布尔标志(tabAinvalidated
,tabBinvalidated
),而是为redux存储中的每个更新记录一个时间戳。对于需要基于redux存储更新重新获取的组件,每次重新获取数据时,我都会将redux时间戳复制到它们自己的组件状态。通过这种方式,我可以检查组件是否需要从服务器重新获取自己的数据
setFocus = async() => {
if (this.props.updateTs > this.state.updateTs) {
await this.loadData()
this.setState({ updateTs: this.props.updateTs, })
}
}
看起来很好用