我有一个用redux配置的react项目,用于状态管理。对于api调用,我使用一个名为axios实例的文件。在这个文件中,我需要有权访问redux存储(并且我有权导入存储并使用getState-store.getState(((。现在的问题是,我还想从这个文件(axiosInstance(更新redux状态。如何以有效的方法从这个文件(不是react组件(更新redux存储?
好吧,我假设您正在使用Axios进行网络调用。
tl;dr
使用store.dispatch(action)
和操作更改存储状态
是的,该商店可以使用store.getState()
访问,您也可以用store.dispatch(action)
更改状态。根据文件
调度一个操作。这是触发状态更改的唯一方法。
存储的reducting函数将使用当前的getState((结果和给定的操作同步调用。它的返回值将被视为下一个状态。从现在起,它将从getState((返回,并且将立即通知更改侦听器。
这是因为redux遵循的功能范式(谷歌了解更多信息(。
现在,必须使用actionCreator来定义操作,或者您可以简单地使用具有一个字符串属性{type: 'name-of-action'}
的内联对象来调用.dispatch()
。这将提示商店更改状态。异步操作可能需要redux-thunk。
结论:
让我们在这里省去一些麻烦,因为你可能有很多对商店的调用,你可以创建一个处理AxiosInstance的上下文(因为已经有一个不同的文件(。
在AxiosInstance文件中创建上下文,然后可以根据网络响应开始调度操作。这将为您省去很多麻烦,因为redux会更新状态,而不需要仔细查看。