javascript - 我们可以将 setState 作为 props 从一个组件传递到另一个组件,并在 React 中从子组件更改父状态吗?
问题描述
class App extends Component {
constructor() {
super();
this.state = {
name: 'React'
};
this.setState=this.setState.bind(this)
}
render() {
return (
<div>
<Hello name={this.state.name} />
<p>
Start editing to see some magic happen :)
</p>
<Child {...this}/>
</div>
);
}
}
child Component
var Child=(self)=>{
return(
<button onClick={()=>{
self .setState({
name:"viswa"
})
}}>Click </button>
)
在这里,我绑定了 setState 函数并将其作为道具发送给子组件。这将从子组件更改父组件的状态。这是正确的方法吗?
解决方案
但这比传递函数简单。如果我想改变很多状态变化。与传递函数相比,这将是一种简单快捷的方式,对吗?
执行此操作的正确方法与您的一样简单,并且不违反最佳实践:
class App extends Component {
state = {
name: 'React',
};
render() {
return (
<div>
<Hello name={this.state.name} />
<p>
Start editing to see some magic happen :)
</p>
<Child onClick={() => this.setState({name: 'viswa'})}/>
</div>
);
}
}
const Child=({onClick})=>(
<button onClick={onClick}>Click</button>
);
推荐阅读
- python - 如何在 Python 中分配值?
- python - 从产品中抓取价格时出现 python web 抓取问题
- python - Python:将数据与正在运行的窗口数据集的第 95 个百分位进行比较
- image - 图像在 Pygame 上闪烁
- java - UML 领域模型
- javascript - TypeError:this.source 不是函数,this.source 为 null
- linux - 如何在 ssh 命令中传递 arg
- python - 如何摆脱熊猫数据框中不符合阈值的值(然后绘制它)
- bash - 在 Bash 和 Zsh 中是否有等效的 `set -- $*`?
- .net-core - MassTransit 过滤消费者可以处理的消息