【发布时间】:2018-12-19 17:40:15
【问题描述】:
在阅读了大量关于 React、Redux 和 memoization 的文章后,我想问一个问题……我可以摆脱这个用例吗:
假设我有一个包含以下数据的 redux 存储
// reduxStore
module.exports = {
randomData: [
{ name: 'John', age: 30 },
{ name: 'Peter', age: 25 },
{ name: 'Brenda', age: 15 }
];
};
现在,在我的组件中,我想检索平均年龄。我是这样处理的:
import React from 'react';
import { connect } from 'react-redux';
export function TestComponent(props) {
return <p>The sum of ages is: {props.ageSum}</p>;
}
const mapStateToProps = state => ({
ageSum: state.randomData.map(datum => datum.age).reduce((acc, curr) => acc + curr)
});
const mapDispatchToProps = {};
export default connect(mapStateToProps, mapDispatchToProps)(TestComponent);
我的印象是,这与 reselect 给出的示例以及 React 推荐的其他库相同。
有人可以解释一下,这个例子在优化方面是否以及为什么不明智...
【问题讨论】:
-
除非
state.randomData发生变化,否则组件不会被重新渲染,如果确实发生变化,则必须重做计算,所以无论如何使用记忆化没有意义
标签: javascript reactjs redux react-redux