web-dev-qa-db-ja.com

Reduxレデューサーが私の状態が未定義であると考えるのはなぜですか?

Todoチュートリアルをほぼ一行ずつコピーしていると思いますが、次のエラーが発生します。

エラー:初期化中にレデューサー「addReport」が未定義を返しました。レデューサーに渡される状態が未定義の場合は、明示的に初期状態を返す必要があります。初期状態は未定義ではありません。

そして、これが私のaddReportレデューサーです:

const addReport = (state = [], action) =>
{
  console.log(state)
  switch (action.type) {
    case ADD_NEW_REPORT:
    return [...state,
      addReports(undefined, action)
    ]
    }
}

ロギングステートメントを追加し、それが空の配列を返すことを確認できます。状態を1のように設定しても、同じ結果が得られます。何が足りないのですか?

9
chum of chance

スイッチケースのdefaultがありません。

default: {
  return {
    ...state
  }
}

あなたがそれをするのを忘れると、Reduxは素敵な子供のように一緒に遊ぶことはありません!

または、最後に初期状態を明示的に返すこともできます:If the state passed to the reducer is undefined, you must explicitly return the initial state.

17
Elod Szopos