文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
状态提升
使用 react 经常会遇到几个组件需要共用状态数据的情况。这种情况下,我们最好将这部分共享的状态提升至他们最近的父组件当中进行管理。我们来看一下具体如何操作吧
我们一个计数的父组件,两个按钮组件,两个按钮组件分别对父组件中的数据进行添加和减少操作。
// Counter.js 父组件
import React, { Component } from 'react';
import ButtonAdd from './ButtonAdd';
import ButtonMinus from './ButtonMinus';
class Counter extends Component {
constructor(option) {
super(option);
this.state = { num: 0, age: 19 };
}
minusCount(num, e) {
this.setState((preState) => {
return { num: preState.num - num }
});
}
addCount(num, e) {
this.setState((preState) => {
return { num: preState.num + num }
});
}
render() {
return (
<div>
<p>parent: { this.state.num } -{ this.state.age }</p>
<hr />
<ButtonAdd addCount={ this.addCount.bind(this) } num={ this.state.num } />
<ButtonMinus minusCount={ this.minusCount.bind(this) } num={ this.state.num } />
</div>
);
}
}
export default Counter;
// 子组件 添加按钮组件
import React, { Component } from 'react';
class ButtonAdd extends Component {
render() {
return (
<div>
<span>child:state {this.props.num}</span>
<button onClick={ () => {
this.props.addCount(1);
}}>
+1
</button>
</div>
);
}
}
export default ButtonAdd;
// 子组件: 减少按钮组件
import React, { Component } from 'react';
class ButtonMinus extends Component {
render() {
return (
<div>
<span>child:state { this.props.num }</span>
<button onClick={ () => {
this.props.minusCount(1);
}}>
-1
</button>
</div>
);
}
}
export default ButtonMinus;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论