在编写React / Redux应用程序时,在根级别只有一个订阅者是一种好习惯吗?

时间:2018-04-25 12:49:47

标签: reactjs redux

去年我使用React和Redux编写了一个相当大的应用程序,在根级别只有一个用户。该模式(大致)如下:

   display: block;
   margin: 0 auto;

基本上,我每次都会渲染整个事物",安全地知道React总体上只重新渲染实际需要重新渲染的后代组件。即使应用程序扩展到数千个组件实例,这也非常有效。

然而,现在,我想知道这是否是传递给他人的合理建议。我没有找到明确的指导(虽然我可以看得更加努力)。一般来说,我得到的印象是,现在大多数人都会编写许多订阅商店的组件。例如,见:

https://www.reddit.com/r/javascript/comments/6hperk/i_use_react_and_redux_but_never_reactredux_what/dj0fywb/

但是,并不是React的整个想法,或者至少有一个想法,你不应该担心引擎盖下发生了什么?在根级别订阅工作正常,因为React足够聪明,知道不会重新渲染所有内容,对吧?或者我错过了这一点?同样值得指出的是,我的应用程序运行得非常好,我从来不必再考虑性能。

1 个答案:

答案 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值进行类型检查,这有助于组件测试。

所以我想,不。这不是好习惯。 好的做法是拥有这么多订阅者,应该订阅多少组件来减少一些减少器