使用redux,反模式时,在反应叶组件中设置this.state?利弊

时间:2016-08-18 08:42:42

标签: reactjs redux

在Leaf组件中设置并保持状态不会触及Redux的反模式吗?

例如,假设项目的叶节点包含modalIsOpenbuttonIsDisabled以及countOfObjects等状态。

此叶节点具有跟踪这些状态并根据需要修改它们的功能。这样,在Redux出现之前,它就是一个简单的反应组件。它是完全模块化和可重复使用的,因为您不必重新实现任何Redux操作,例如toggleModal函数,如果您要将connect函数添加到组件中ggplot2另一个项目中的组件。 (让我们假设没有其他组件需要这些简单的状态)

所以给出这个例子,这是一个反模式吗?这样做有什么好处和坏处?在我决定是否要像这样制作我的叶子节点之前,我想评估任何好处+缺点。

2 个答案:

答案 0 :(得分:2)

它不是反模式。如果它只影响组件的可视模板并且与某些共享数据无关,则可以在Leaf组件中使用state。因此,不要对Redux模式和React-ways非常狂热。 写出优雅可读的代码,您和您的团队成员可以在此之后支持,并制作产品))

答案 1 :(得分:2)

绝对不是! Redux非常适合管理应用程序数据,但是当涉及管理UI相关状态(如“活动”类)时,建议您使用React的本机状态。

例如 - 如果要存储按钮的状态,如果启用或禁用,则不一定需要Redux!您仍然可以使用React的本机状态。像这样 -

class Button extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      active: true
    };
    this.toggle = this.toggle.bind(this);
  }

  toggle() {
    this.setState({
      active: !this.state.active
    });
  }

  render() {
    return (
      <div>
        <button disabled={this.state.active} onClick={this.toggle}>
          {this.state.active ? 'Click me!' : 'You cannot click me'}
        </button>
      <div>
    );
  }
}

请参阅?你根本不需要Redux!祝你好运!

相关问题