【发布时间】:2017-09-08 11:06:32
【问题描述】:
我有一个名为 ChildComponent 的组件,我从 ParentComponent 调用它,如下所示。注意事项:
- 有一个“显示孩子”按钮。
- 在第一次单击此按钮时,它应该重新渲染子组件。但是在随后的点击中,它甚至不应该调用 ChildComponent,而是从 this.refs 中获取 dom。为此,我使用
return this.refs.chid会出错
下面是代码。
ParentComponent= React.creatClass({
getInitialState: function(){
return {
rendered: false
}
},
render_or_cache: function(){
if (this.state.rendered){
return this.refs.child;
}
else {
return <ChildComponent/>
}
},
onbuttonclick: function(){
this.setState({rendered: true})
},
render:function(){
return (
<div ref="child">
{this.render_or_cache()}
</div>
<button onClick={this.onbuttonclick()}>Show Child Again</button>
)
}
})
ChildComponent= React.creatClass({
render:function(){
return (
<div>Some Text from Child</div>
)
}
})
【问题讨论】:
-
人们格式化他们的代码是有原因的:这样其他人就可以阅读代码。
-
^ 同意。尝试将您的代码编辑为更易于阅读的格式
-
你能解释一下你的最终目标吗?为什么
ChildComponent不应该重新渲染?ChildComponent的所有 个实例是否应该只渲染一次,或者问题是如何防止ParentComponent的特定子树重新渲染? -
感谢您的反馈。如果 ChildComponent 有一个由用户在初始渲染时填充的输入框怎么办。现在,如果用户再次点击“Show Child Again”按钮,它会重新渲染子组件并且输入框中的值会丢失
-
我的意图是持久化数据。即输入框中的值。这就是为什么我不希望子组件发生新的渲染,因为在这种情况下,输入框中的值将丢失
标签: javascript reactjs