reactjs - 在 ReactJS 中设置状态时如何渲染子组件或并行组件?
问题描述
设置状态时如何渲染子组件或并行组件?
主要组件包含以下代码
editValue(data) {
console.log("edited")
this.setState({ edits:data }, function() {
console.log("edited value...")
})
}
render() {
return(
<div>
<TextComponent edit={this.editValue.bind(this)}/>
<AreaComponent editedValue = {this.state.edits}/>
</div>
)
}
文本组件:
trigger = (data) => {
this.props.edit(data)
}
render() {
return (
<div>
<p onClick={this.trigger.bind(this,'clicked')}>Click</p>
</div>
)
}
区域组件:
componentDidUpdate() {
console.log("update - component")
}
componentWillReceiveProps(nextProps){
console.log('receive - component');
}
在这里,当我单击时,<p>
我的控制台如下
edited
receive - component
update - component
edited value...
我的问题是我在 state 中设置的编辑值没有反映在我的AreaComponent
. 所有的componentDidUpdate()
andcomponentWillReceiveProps()
在设置状态之前被触发。我想在下一个组件中获取状态值。我应该在此代码中做哪些更改?
解决方案
嘿,我测试了您的代码,它按您的预期运行。
这是给你的沙箱:https ://codesandbox.io/s/7yry1onrq6
为了让您在单击后看到更改,TextComponent
只需editedValue
使用AreaComponent
.
这是一个镜像您的代码的示例:
class AreaComponent extends React.Component {
componentDidUpdate() {
console.log("update - component");
}
componentWillReceiveProps(nextProps) {
console.log("receive - component");
}
render() {
return <p>{this.props.editedValue}</p>;
}
}
在上面的示例中editedValue
,单击后正确更改。
推荐阅读
- java - Target 不是 JDK 根目录。找不到 Java 可执行文件 jdk 13.0.2 eclipse 2019
- continuous-integration - Bamboo Java 规范、单一管道存储库和多个项目
- windows - 列表框:WM_CHAR 搜索项的时间间隔
- amazon-web-services - 在运行时找不到 AWS Java SDK
- python - 如何对 CSV 文件中的多个列进行分组和求和?
- c++ - OpenCV 库无法读取 .mp4 视频文件来创建 VideoCapture 对象
- php - 如何在 Laravel 中将部门显示为节点
- apache - .htaccess 中的 RewriteRules 不为 cPanel 上的 Drupal 网站重定向
- c# - 匹配两个序列
- reactjs - i18n 在函数中翻译文本