为什么redux saga reducer调用了两次?

时间:2018-09-25 13:04:52

标签: reactjs redux react-redux redux-saga

我正在使用redux-saga处理要存储的数据,目前我对一个问题感到困惑,我以前从未见过。所以问题是我的reducer调用了两次,并且第一次返回的数据是不确定的,所以我被迫向其中添加默认值 null 。但是,正如我在互联网上的其他示例中看到的那样,没有默认值用例。 这是我的减速器`

import { createReducer } from '../utilities';
import { GET_USER_INFO } from '../actions';

const userInfo = createReducer({}, {
  [GET_USER_INFO](state, { userData = null }) {
    console.log(userData, 'userData from userReducer');
    return userData;
  }
});


export default userInfo;

这是用于创建减速器的辅助功能`

const createReducer = (initialState, handlers) => (state = initialState, action) => {
  if (Object.prototype.hasOwnProperty.call(handlers, action.type)) {
    // console.log(state, 'state from createReducer');
    console.log(action, 'action from createReducer');
    // console.log(initialState, 'initialState from createReducer');
    return handlers[action.type](state, action);
  }
  return state;
};

export default createReducer;

这是我的传奇`

import axios from 'axios';

import {
  take, put, call
} from 'redux-saga/effects';

import { getUserInfo, GET_USER_INFO } from '../actions';

export default function* currentUserSaga() {
  try {
    yield take(GET_USER_INFO);
    const response = yield call(axios, '/api/current_user');
    console.log(response, 'responseee from user saga');
    yield put(getUserInfo(response.data));
  } catch (err) {
    console.log(err);
  }
}

您可以在我的reducer中看到,我被迫编写默认值,但是也许我做错了事。 是这样吗?也许有更好的解决方案

0 个答案:

没有答案