Javascript 只有一个父选择器时使用createSelector的好处
假设我们有一个简单的redux存储:Javascript 只有一个父选择器时使用createSelector的好处,javascript,reactjs,redux,immutable.js,reselect,Javascript,Reactjs,Redux,Immutable.js,Reselect,假设我们有一个简单的redux存储: { user: { age: 10 } } 我们有一个选择器来获取用户: const getUser = state => state.get('user') // suppose we used immutable.js 现在,我们有两种方法来获取用户年龄: 使用createSelector并使用getUser作为父选择器: 直接使用现有选择器: 问题: 在性能、记忆等方面,哪一个更好。 另一个衍生问题: 我在这里提出的例
{
user: {
age: 10
}
}
我们有一个选择器来获取用户:
const getUser = state => state.get('user') // suppose we used immutable.js
现在,我们有两种方法来获取用户年龄:
createSelector
并使用getUser作为父选择器:我在这里提出的例子很简单,让我们考虑一下,当一个非常强的大型复杂的< /强> ReDux商店时,两种方法的区别是否重要?
< P>如果选择器的属性经常改变,将它们放在单独的选择器上是有意义的。至少在选择器的情况下,通常对象作为一个整体改变,我更喜欢为用户创建一个选择器 例如,假设我们有一个对象:const profile = {
name : 'John',
email,
timezone,
...
locale : 'en',
}
如果创建的
组件与区域设置紧密耦合,但不与配置文件的其他部分(如名称等)紧密耦合,那么getLocale()
的选择器就有意义(这也是我们实现区域设置组件的方式)
另一方面,如果您有一个配置文件页面,用户可以在其中编辑各种字段,那么在进行更改时,该页面很可能需要频繁重新呈现,因此在该页面上只使用getProfile()
选择器是有意义的
我们处理相当复杂和庞大的Redux状态,例如,因为我们在web应用程序中到处使用currentUserId
或userName
,所以我们有专门的选择器来利用记忆功能
但是,对于测验或作业,我们使用单个选择器getQuizContents()
,而不是其内部字段,因为我们知道,大多数需要测验信息的组件不仅需要名称,还需要许多内部字段,如日期、问题数量等
const getAge = state => getUser(state).get('age');
const profile = {
name : 'John',
email,
timezone,
...
locale : 'en',
}