【发布时间】:2019-01-29 19:18:09
【问题描述】:
我认为它的工作方式不同,但我不知道它是如何工作的。
1。使用类变量
export default class Test extends Component {
constructor() {
this.active = false;
}
render() {
this.active = this.props.name === 'Dan'? true : false;
return (
<div>
{this.active? 'ssup?' : 'noooo'}
</div>
);
}
}
2。使用 React 组件状态
export default class Test extends Component {
constructor() {
this.state = { active: false };
}
render() {
if(this.props.name === 'Dan') {
this.setState({active: true});
}
return (
<div>
{this.active? 'ssup?' : 'noooo'}
</div>
);
}
}
如果只受接收到的道具影响,我认为不需要使用 State 重新渲染。
【问题讨论】:
-
以上代码为示例。 'active' 还需要运行其他逻辑。
-
组件的输出通常取决于传入的 props,可选地取决于它自己的内部状态。如果通过
setState更改状态,则计划重新渲染组件。请注意,由于这个事实,您实际上不能在render内调用setState。类变量主要用于存储副作用数据,例如订阅 ID,以便在组件卸载时取消订阅。您的示例既不保证类变量也不保证状态。 -
你的例子没有意义。为什么要有状态?您的组件是
name属性的纯函数。 -
请只关注差异。对不起我的坏样本:(
-
以下任何答案是否能帮助您找到不同之处?
标签: javascript reactjs react-native