Reactjs Redux是访问和使用中间件内部状态的最佳方法

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

我的情况是,我需要使用axios在post请求中向所有端点发送两个参数。这些参数已在我的存储中

因此,我创建了一个“中间件”来处理我的所有请求,如下所示:

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
似乎是合理的。这个中间件是一个动作创建者吗。。。谢谢你们!非常感谢。这就是我需要的!