Redux 工具包对 `useSelector` 和 `createSelector` 的混淆
confusion about `useSelector` and `createSelector` with Redux toolkit
我是 Redux 和 Redux 工具包的新手。我了解到 createSelector
可以接受多个输入选择器,这些选择器可以作为单独的参数或数组提供。所有输入选择器的结果作为单独的参数提供给输出选择器。
const selectA = state => state.a;
const selectB = state => state.b;
const selectC = state => state.c;
const selectABC = createSelector(
[selectA, selectB, selectC],
(a, b, c) => {
// do something with a, b, and c, and return a result
return a + b + c;
}
);
我的问题是,如果我只关心一个简单的状态,我可以像这样使用useSelector
吗
const selectA = state => state.a;
const a = useSelector(selectA)
这两种用法有什么区别?
“选择器”是接受 Redux 状态树作为参数的任何函数,returns 一些提取或派生的数据。这包括您展示的普通函数。
在许多情况下,您希望记住结果的计算,例如映射项目数组,这样它就不会 re-calculated 除非输入发生变化。 Reselect 的 createSelector
创建记忆化的选择器函数,仅在输入发生变化时才重新计算输出。
更多详细信息,请参阅我的 post Using Reselect Selectors for Encapsulation and Performance , as well as the "Performance and Normalizing Data" page in the new "Redux Essentials" core docs tutorial。
我是 Redux 和 Redux 工具包的新手。我了解到 createSelector
可以接受多个输入选择器,这些选择器可以作为单独的参数或数组提供。所有输入选择器的结果作为单独的参数提供给输出选择器。
const selectA = state => state.a;
const selectB = state => state.b;
const selectC = state => state.c;
const selectABC = createSelector(
[selectA, selectB, selectC],
(a, b, c) => {
// do something with a, b, and c, and return a result
return a + b + c;
}
);
我的问题是,如果我只关心一个简单的状态,我可以像这样使用useSelector
吗
const selectA = state => state.a;
const a = useSelector(selectA)
这两种用法有什么区别?
“选择器”是接受 Redux 状态树作为参数的任何函数,returns 一些提取或派生的数据。这包括您展示的普通函数。
在许多情况下,您希望记住结果的计算,例如映射项目数组,这样它就不会 re-calculated 除非输入发生变化。 Reselect 的 createSelector
创建记忆化的选择器函数,仅在输入发生变化时才重新计算输出。
更多详细信息,请参阅我的 post Using Reselect Selectors for Encapsulation and Performance , as well as the "Performance and Normalizing Data" page in the new "Redux Essentials" core docs tutorial。