在Redux和React Native应用程序中访问Store
Accessing Store within Redux and React Native app
我开始开发一个应用程序,它将调用一个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
视频详细介绍了如何在商店中注册减速器,所以这个系列应该会很有帮助。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- Javascript,访问一个主要对象模块模式中的每个对象
- 如何访问声音管理器2创建的声音对象
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- 是否可以从父类访问子类的属性
- 如何访问fastOpt.js
- 访问JSON对象内部的数组元素
- 从模块内部访问Express装载路径
- 难以访问的JS环境中的语法错误
- 如何从对象的原型方法访问JavaScript对象属性
- 访问json数组中的对象
- 通过javascript/html访问twitter共享iframe
- Dojo:访问dijit.form.Select中单击的项目
- 为什么在这个网站上不能通过JS访问元素
- 从ng模板访问作用域
- 回流:让多个组件访问同一个Store
- 在Redux和React Native应用程序中访问Store
- 在没有处理程序引用的情况下覆盖侦听器,是否可以访问Ext.data.store上的(可能是私有的)事件属性