【问题标题】:ReduxThunk How do I pass action data to the original state?ReduxThunk 如何将操作数据传递到原始状态?
【发布时间】:2019-08-01 15:24:12
【问题描述】:

我想将动作数据传递到初始状态,而无需等待获取数据。

我按照本教程进行操作,它可以工作,但我正在尝试修改它以解析任何 JSON 数据,这也可以,但我必须输入用户名来获取数据,我希望它可以从初始值中获取状态。对不起,如果我没有解释清楚,但我希望你明白。

const initialState = {
  userData: {},
  isFetching: false,
  isError: false
};

const asyncReducer = (state = initialState, action) => {
  switch (action.type) {
    case "FETCH_USER":
      return Object.assign({}, state, {
        isFetching: true,
        userData: {},
        isError: false
      });
      case "FETCHED_USER":
        return Object.assign({}, state, {
          userData: action.data,
          isFetching: false,
          isError: false
        });
      case "RECEIVE_ERROR":
        return Object.assign({}, state, {
          isError: true,
          isFetching: false
        });
    default:
      return state;
  }
};

export default asyncReducer;

【问题讨论】:

  • 你能详细说明一下吗?比如你想把什么发送到初始状态,你的动作是什么样的?

标签: javascript reactjs react-redux redux-thunk


【解决方案1】:

您的问题有点不清楚,并且没有操作代码可以执行每次都正确吗?如果是这种情况,您可以非常简单地在调度后向 thunk 添加第二个参数并获取状态。然后,您将拥有状态值供您修改。因此,您可以在操作中执行以下操作:

const myAction = () => (dispatch, getState) => {
  const userData = getState().userData;
  ...do your stuff with that
  dispatch({
    type: "FETCHED_USER",
    data: new_stuff
  });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多