使用Redux工具包混淆'useSelector'和'createSelector'

k97glaaz  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(253)

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

这两种用法有什么区别?

brqmpdu1

brqmpdu11#

“选择器”是任何接受Redux状态树作为参数的函数,并返回一些提取或派生的数据,包括你所展示的普通函数。
在很多情况下,你需要记忆结果的计算,比如Map到一个数组中,这样除非输入改变了,否则它不会被重新计算。Reselect的createSelector创建了记忆的选择器函数,它只在输入改变时才重新计算输出。
有关更多详细信息,请参阅我的帖子Using Reselect Selectors for Encapsulation and Performance,以及新的“Redux Essentials”核心文档教程中的“性能和规范化数据”页面。

h79rfbju

h79rfbju2#

只有当我们想记住检索存储值的函数时,才使用createSelector
否则不需要。

相关问题