Reactjs Redux是访问和使用中间件内部状态的最佳方法
我的情况是,我需要使用axios在post请求中向所有端点发送两个参数。这些参数已在我的存储中 因此,我创建了一个“中间件”来处理我的所有请求,如下所示:Reactjs Redux是访问和使用中间件内部状态的最佳方法,reactjs,redux,Reactjs,Redux,我的情况是,我需要使用axios在post请求中向所有端点发送两个参数。这些参数已在我的存储中 因此,我创建了一个“中间件”来处理我的所有请求,如下所示: const POST = async (url, body = {}) => { const {Token, UserId} = store.getState().User const {DeviceIdentifier} = await GetDeviceInfo() const data = {AgentId: User
const POST = async (url, body = {}) => {
const {Token, UserId} = store.getState().User
const {DeviceIdentifier} = await GetDeviceInfo()
const data = {AgentId: UserId, DeviceId: DeviceIdentifier, ...body}
const response = await axios.post(`${BASE_URL}${url}$`, data, {
headers: {Authorization: `Bearer ${Token}`},
})
if (!response.data.Logged) {
logoutUser()
return false
}
return response
}
但是,我读了很多文章,说像那样使用getState()不是一个好主意
在这样的情况下,什么是最好的策略
非常感谢你 使用redux thunk时,可以提供两个参数
dispatch
和getState
。要提供更多参数,请执行以下操作:
const store = createStore(
reducer,
applyMiddleware(thunk.withExtraArgument({ url, body }))
)
// .withExtraArgument(url) // to supply further one arguments only
然后您可以使用getState
如下:
const POST = async (dispatch, getState, {url, body = {}}) => {
...
getState().User
在中间件中使用getState()
如果您想阅读一些关于一些假设性问题的扩展讨论以及我的理由,我的帖子将进一步详细介绍。Dan Abramov在他的Redux Thunk库中传递一个getState
参数(return(dispatch,getState)=>{…}
)。注意一个相关的问题。所以在中间件中使用getState
似乎是合理的。这个中间件是一个动作创建者吗。。。谢谢你们!非常感谢。这就是我需要的!