【发布时间】:2019-04-26 17:39:06
【问题描述】:
我有以下结构:
class Parent extends React.Component {
componentDidMount() {
document.addEventListener('keydown', () => {
this.value++;
})
}
this.value = 0;
render() {
return (<ChildComponent value={this.value} />)
ChildComponent 只是渲染值:
class ChildComponent extends Component {
render() {
return (
<div>
{this.props.value}
</div>
);
}}
我不想在每个 KeyDown 事件上重新渲染父组件,这就是为什么我不给状态赋值。
我希望 ChildComponent 在每个 KeyDown 事件上重新渲染,但 ChildComponent 只渲染一次,因为它没有改变值并且总是显示 0,尽管 this.value 正在改变。
是否可以在更改 ParentComponent 的 this.value 时重新渲染 ChildComponent,或者我应该使用 setState 将逻辑放入 ChildComponent 以呈现正确的结果?
【问题讨论】:
-
如果不更新状态,您将无法在 Parent 上触发
render。我认为setState是最好的方法。
标签: javascript reactjs