与Redux工具包混淆"useSelector"和"createSelector"



我是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)

这两种用法有什么区别?

A"选择器";是任何接受Redux状态树作为参数并返回一些提取或派生数据的函数。这包括您展示的简单函数。

在许多情况下,您希望将结果的计算存储起来,例如映射到项目数组上,这样,除非输入发生了更改,否则不会重新计算结果。Reselect的createSelector创建了记忆选择器函数,仅在输入发生变化时才重新计算输出。

有关更多详细信息,请参阅我的文章《使用重新选择选择器进行封装和性能》,以及;性能和标准化数据";新的"页面";Redux Essentials";核心文档教程。

只有当我们想记忆检索存储值的函数时,才使用createSelector

否则就不需要了。

最新更新