去年我使用React和Redux编写了一个相当大的应用程序,在根级别只有一个用户。该模式(大致)如下:
display: block;
margin: 0 auto;
基本上,我每次都会渲染整个事物",安全地知道React总体上只重新渲染实际需要重新渲染的后代组件。即使应用程序扩展到数千个组件实例,这也非常有效。
然而,现在,我想知道这是否是传递给他人的合理建议。我没有找到明确的指导(虽然我可以看得更加努力)。一般来说,我得到的印象是,现在大多数人都会编写许多订阅商店的组件。例如,见:
但是,并不是React的整个想法,或者至少有一个想法,你不应该担心引擎盖下发生了什么?在根级别订阅工作正常,因为React足够聪明,知道不会重新渲染所有内容,对吧?或者我错过了这一点?同样值得指出的是,我的应用程序运行得非常好,我从来不必再考虑性能。
答案 0 :(得分:1)
创建应用时,其性能并不是唯一要考虑的因素。除了许多其他,清晰度和代码明显,易于开发和维护。
如果你使用react-redux的connect函数,任何看到你的组件的人都会清楚地知道reducer和该reducer的哪个属性会更新该组件。
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
MyComponent.propTypes = {
status: PropTypes.number,
};
class MyComponent extends Component {
render() {
return (
<div> { this.props.status } </div>
);
}
}
function mapStateToProps(state) {
return {
status: state.someReducer.status,
};
}
function mapDispatchToProps(dispatch) {
return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);
同样重要的是,您可以使用PropTypes对传递给props的reducer值进行类型检查,这有助于组件测试。
所以我想,不。这不是好习惯。 好的做法是拥有这么多订阅者,应该订阅多少组件来减少一些减少器