55

私はこのコードに従おうとしていますredux-saga

export const getUser = (state, login) => state.entities.users[login]
export const getRepo = (state, fullName) => state.entities.repos[fullName]

これは、次のように佐賀で使用されます。

import { getUser } from '../reducers/selectors'

// load user unless it is cached
function* loadUser(login, requiredFields) {
  const user = yield select(getUser, login)
  if (!user || requiredFields.some(key => !user.hasOwnProperty(key))) {
    yield call(fetchUser, login)
  }
}

このgetUserレデューサー (レデューサーでさえありますか) は、私が通常レデューサーに期待するものとは大きく異なります。

getUserセレクターとは何か、レデューサーとは何か、redux-saga とどのように適合するのか、誰でも説明できますか?

4

4 に答える 4

2

セレクターは Redux の状態を引数として取り、コンポーネントに渡すデータを返す関数です。

const getUserData = state => state.user.data;

なぜ使用する必要があるのですか?

  1. 主な理由の 1 つは、Redux でデータが重複しないようにすることです。
  2. データ オブジェクトの形状は、アプリケーションが成長するにつれて変化し続けるため、関連するすべてのコンポーネントを変更するよりも、1 か所でデータを変更する方がはるかに推奨され、簡単です。
  3. セレクターは同じ状態で動作するため、レデューサーの近くにある必要があります。データの同期を維持しやすくなります。

reselectを使用すると、同じ入力が関数に渡されたときにデータの意味を記憶しやすくなり、再計算するのではなく、前の結果が返されます。したがって、アプリケーションのパフォーマンスが向上します。

于 2018-02-22T07:58:35.483 に答える