Redux Thunk-调度多个操作后状态未定义

Redux Thunk-调度多个操作后状态未定义,redux,Redux,当我在分派另一个操作之后分派一个操作时,我注意到我的状态是fetching变得未定义。我认为这可能是一个异步问题,操作一个接一个地调度。如何修复此问题,以便能够正确地分派这两个操作 我的redux模块: const FETCHING = 'FETCHING' const FETCHING_KEYWORD = 'FETCHING_KEYWORD' function fetching() { return { type: FETCHING, } } function settin

当我在分派另一个操作之后分派一个操作时,我注意到我的状态是fetching变得未定义。我认为这可能是一个异步问题,操作一个接一个地调度。如何修复此问题,以便能够正确地分派这两个操作

我的redux模块:

const FETCHING = 'FETCHING'
const FETCHING_KEYWORD = 'FETCHING_KEYWORD'

function fetching() {
  return {
    type: FETCHING,
  }
}

function settingKeyWord(keyWord) {
  return {
    type: FETCHING_KEYWORD,
    keyWord,
  }
}

export function fetchKeyWord (keyWord) {
  return (dispatch, getState) => {
    const { isFetching } = getState()
    const { keyWord } = getState()

    // After I dispatch the two actions here, isFetching becomes undefined
    dispatch(fetching())
    dispatch(settingKeyWord(keyWord))
  }
}

const initialState = {
  isFetching: false,
  keyWord: '',
}

export default function results(state = initialState, action) {
  switch (action.type) {
    case FETCHING:
      return {
        isFetching: true,
      }
    case FETCHING_KEYWORD:
      return {
        keyWord: action.keyWord,
      }
    default:
      return state
  }
}

减速器案例需要返回整个状态,而不仅仅是更新的部分,因此在正常调度任一操作时,问题也应该发生。您可以在减速机案例中使用Object.assign或Object spread语法来修复它。例如,对于获取:


啊,当然!非常感谢。ImmutableJS也可以工作。
case FETCHING:
  return Object.assign((), state, { 
    isFetching: true,
  })
case FETCHING:
  return {...state,
    isFetching: true,
  })