繁体   English   中英

在 React 组件外部更新 redux state

[英]Update redux state outside React component

我有一个配置了 redux 的反应项目,用于 state 管理。 对于 api 调用,我使用一个名为 axiosInstance 的文件。 在这个文件中,我需要访问 redux 存储(并且我可以访问导入存储并使用 getState - store.getState())。 现在的问题是我还想从这个文件(axiosInstance)更新 redux state。 如何以有效的方法从此文件(不是反应组件)更新 redux 存储?

好的,我假设您使用 Axios 进行网络调用。

tl;博士

使用store.dispatch(action)和 action 进行更改以存储 state

是的,可以使用store.getState()访问商店,您也可以使用store.dispatch(action)更改 state。 根据文档

调度一个动作。 这是触发 state 更改的唯一方法。

商店的减少 function 将与当前的 getState() 结果和给定的动作同步调用。 其返回值将被视为下一个 state。 从现在开始,它会从 getState() 中返回,并且会立即通知更改监听器。

这是因为 redux 遵循的功能范例(谷歌了解更多)。

现在,必须使用actionCreator定义操作,或者您可以简单地调用 .dispatch .dispatch()并使用内联 object ,其中一个字符串属性为{type: 'name-of-action'} 这会提示商店更改 state。 您可能需要 redux-thunk 来执行异步操作。

结论:

让我们在这里省点麻烦,因为您可能对存储有很多调用,您可以创建一个处理 AxiosInstance 的上下文(因为已经有一个不同的文件)。

在 AxiosInstance 文件中创建一个上下文,然后您可以根据网络响应开始调度操作。 这将为您省去很多麻烦,因为 state 是由 redux 更新的,而实际上并没有看太多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM