如何在 React Native 屏幕之间共享状态?

Ben*_*ird 7 global-variables reactjs react-native react-navigation

我正在尝试使用 React Native 和 React 导航构建一个应用程序,这样在一个屏幕中更改某些内容也会在另一个屏幕中更改它。

到目前为止,我发现能够在两个屏幕之间同步数据的唯一方法是使用带有onPress={() => navigate('OtherScreen', this.state)}. 这有两个问题。首先,它仅适用于我明确调用导航的地方 - 当我滑动以更改屏幕时,它不会传输数据。但大多数情况下,这似乎与 React 哲学背道而驰,数据应该通过渲染调用从模型中提取,而不是一个渲染方法将数据推送到另一个组件中。

这已经完全难倒我了。我当前的“解决方案”是将我的整个应用程序编写在一个文件中,以便所有内容都在同一范围内,并且我可以使用全局变量来存储全局状态。

我不可能是第一个遇到这个问题的人,我发现很难想象 react-native 没有任何内置方法来定义应用程序范围的数据存储。

是否有在 react-native 中全局共享数据的标准模式?

如何在两个屏幕之间同步数据?

Aun*_*ein 4

您可以使用ContextRedux在容器(屏幕)或组件之间共享。

\n\n
\n

Context旨在共享可被视为 React 组件树的 \xe2\x80\x9cglobal\xe2\x80\x9d 的数据,例如当前经过身份验证的用户、主题或首选语言。

\n\n

Redux是 JavaScript 应用程序的可预测状态容器。

\n
\n

  • 我试过!昨天我花了 4 个小时试图让 redux 工作,我阅读了所有文档和教程,但我不知道如何使其在多个屏幕上可用。反应导航似乎是为了防止这种情况而设计的 (3认同)