React子组件修改父组件的状态
来源:互联网 发布:淘宝买快排会查下来吗 编辑:程序博客网 时间:2024/05/24 07:21
React子组件修改父组件的状态
在React中,父子组件间的通信是通过props来传递参数的。一般情况下,父组件传一个值给子组件,同时还要传一个修改该值的方法函数。这样,在子组件中调用这个方法函数才能修改该值,并再次传给子组件,从而修改子组件状态。
虽然这个数据流非常绕,至少是能接受的,但一旦要传非常多的参数给子组件的时候,这样就很麻烦,比如要传十个参数,就必须再传十个修改函数,而且这十个修改函数还必须在父组件中写一遍定义,结果就如下一般繁琐:
class App extends Component { constructor(props) { super(props); this.state = { step: 1, isHome: '', isNewCar: false, plateNo: '', name: '', idCard: '', brandModel: '', engineNo: '', vin: '', hasRecord: 0, registerDate: '' }; }; //修改参数的函数 setStep() { this.setState({ step: ++this.state.step }); } //修改参数的函数 setIsHome(val) { this.setState({ isHome: val }); }...... //修改参数的函数 setRegisterDate(val) { this.setState({ registerDate: val }); } render() { return ( <div> <IndexDesk step={this.state.step} isHome={this.state.isHome} isNewCar= {this.state.isNewCar} plateNo={this.state.plateNo} idCard={this.state.idCard} brandModel={this.state.brandModel} engineNo={this.state.engineNo} vin={this.state.vin} hasRecord={this.state.hasRecord} registerDate={this.state.registerDate} setStep={this.setStep.bind(this)} setIsHome={this.setIsHome.bind(this)} . . . setRegisterDate={this.setRegisterDate.bind(this)} /> </div> ); };}
这是我最先想到的思路,显然,这个代码冗余实在是太大,后来发现,其实我可以传递一个函数就可以搞定所有的参数修改函数了:
//修改根组件的状态 setSet(obj) { this.setState(obj); }
之前的组件可以写成如下模样
class App extends Component { constructor(props) { super(props); this.state = { step: 1, isHome: '', isNewCar: false, plateNo: '', name: '', idCard: '', brandModel: '', engineNo: '', vin: '', hasRecord: 0, registerDate: '' }; };//修改根组件的状态 setSet(obj) { this.setState(obj); } render() { return ( <div> <IndexDesk step={this.state.step} isHome={this.state.isHome} isNewCar= {this.state.isNewCar} plateNo={this.state.plateNo} idCard={this.state.idCard} brandModel={this.state.brandModel} engineNo={this.state.engineNo} vin={this.state.vin} hasRecord={this.state.hasRecord} registerDate={this.state.registerDate} setSet={this.setSst.bind(this)} /> </div> ); };}
代码瞬间少了很多,世界顿时美好了起来!
0 0
- React子组件修改父组件的状态
- React-Native子组件修改父组件的几种方式,兄弟组件状态修改
- React-Native子组件修改父组件的几种方式,兄弟组件状态修改
- 小白使用React---子组件的状态变化更新到父组件中
- React native 父组件 子组件之间的调用
- React.js 子组件调用父组件的方法
- React 父组件获取子组件节点的ref值
- React 组件之间 事件调用(父组件调用子组件)
- react组件状态的一点说明
- react子组件如何向父组件传值
- react子组件与父组件之间方法调用
- react-bits:从父组件获取子组件
- react子组件如何向父组件传值
- React 子组件向父组件传值
- react父组件与子组件进行通信
- React子组件向父组件传值
- React Native 的子组件向父组件传值的简单例子
- react父组件通过ref获取不到子组件方法的解决方案
- Codeforces Round 374 (Div 2)D Maxim and Array 【贪心】
- NetBeans打开外部项目时出现Project needed to be updated SDk tools
- windbg安装mona.py插件
- 程序员发现 Bug 的时候是怎样一种心境?
- 数据结构看书笔记(一)--数据结构简介
- React子组件修改父组件的状态
- POJ-2253-Frogger
- MFC文档/视图结构体系及SDI回顾(2)
- 程序员最害怕的5件事,你中招了吗?
- destoon通过修改源代码实行及时订单处理在线支付
- 安装jpype出现_jpype错误的解决方案
- equals与==之间的区别
- 使用Spring(二)实例化方式(静态工厂,实例工厂)
- The Log(我所读过的最好的一篇分布式技术文章)