在React组件外部更新redux状态



我有一个用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会更新状态,而不需要仔细查看。

最新更新