在Leaf组件中设置并保持状态不会触及Redux的反模式吗?
例如,假设项目的叶节点包含modalIsOpen
和buttonIsDisabled
以及countOfObjects
等状态。
此叶节点具有跟踪这些状态并根据需要修改它们的功能。这样,在Redux出现之前,它就是一个简单的反应组件。它是完全模块化和可重复使用的,因为您不必重新实现任何Redux操作,例如toggleModal
函数,如果您要将connect
函数添加到组件中ggplot2
另一个项目中的组件。 (让我们假设没有其他组件需要这些简单的状态)
所以给出这个例子,这是一个反模式吗?这样做有什么好处和坏处?在我决定是否要像这样制作我的叶子节点之前,我想评估任何好处+缺点。
答案 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!祝你好运!