在Redux和React Native应用程序中访问Store

Accessing Store within Redux and React Native app

本文关键字:访问 Store 应用程序 Native Redux React      更新时间:2023-09-26

我开始开发一个应用程序,它将调用一个API,这将需要包含一个JWT,我计划将其存储在Redux存储中。

通常你可以通过将存储的特定部分映射到组件的mapStateToProps()connect()状态来访问Redux存储,但是我想在一个文件中访问Redux存储,这个文件最终不会成为React组件/容器-只是一个纯js文件,它将处理API调用。

这可能吗?

可以使用createStore返回的store的getState()函数。您可以在从状态中获取所需数据的函数中使用此方法。

const myImportantData = () => store.getState().my.deep.data;

上面的版本直接使用store,就像在全局变量中一样。这可以防止您在流程中使用多个存储。通常这是您想要的,但在服务器上运行时并非如此。也就是说,在服务器上,您可能不需要JWT访问。

如果您确实需要交换存储,那么您可以将其作为参数传递或关闭store局部变量:

const getDataGrabber = store => () => store.getState().my.deep.data;

是的,这是可能的。

Redux是框架无关的,尽管它是考虑到React的。

mapStateToProps()connect()方法不是Redux核心库的一部分,而是帮助库"React-Redux"的一部分,该库专门为Redux在React中使用提供绑定。

值得一看Dan Abramov的Getting started with Redux系列,以了解Redux的核心工作原理。

其中一个例子是视频6和视频7,他讨论了Redux存储并描述了组成Redux存储的三种方法:

store.getState  // gets the current application state
store.dispatch  // changes the current application state by dispatching an action
store.subscribe // suscribes to changes and re-renders the app using the
                // current state

视频详细介绍了如何在商店中注册减速器,所以这个系列应该会很有帮助。