我正在使用redux
和redux-thunk
进行异步操作。
我在这个网站上发现了很多类似的问题,在其他一些博客上也是如此 -
有些人建议不要在动作创建者中使用getState()
,因为它是反模式的,另一方面其他人说在某些特定情况下它可以。但我仍然无法理解可以在我的特定情况下 。
我有auth
reducer,其中包含userId
。
这是我的行动创造者:
export const getUserHobbies= () => (dispatch, getState )=> {
const currentUserId = getState().auth.userId;
dispatch({
type: GET_HOBBIES_REQUEST
});
return fetch(`api/hobbies/?userId=${currentUserId}`)
.then (json => {
//...
})
.catch( e => {
//...
})
};
如您所见,我需要当前用户ID来执行AJAX请求,并且我正在使用动作创建器中的getState()
检索当前用户ID。可以吗?或者更好地将userId
连接到我的组件并将此值传递给组件中的action-creator?
答案 0 :(得分:-1)
如果您觉得需要从它外部访问组件的内部状态(动作创建者),我认为这种状态应放在Redux商店中。因此,您可以订阅它的更新并将其作为参数传递给action creator(正如@Marko Niciforovic所提到的那样)。
将该状态移至Redux后,您的代码将符合Redux。
编辑(对评论作出反应): 如果您的状态是当前登录用户的ID,我可以想象这些信息将被大量使用。我会考虑使用HTML5会话存储,本地存储这种状态。