详解React 父组件和子组件的数据传输
在学习 React 框架组件间数据传输知识点前,我们需要先明确几点使用原则。
- React的组件间通讯是单向的。数据必须是由父级传到子级或者子级传递给父级层层传递。
- 如果要给兄弟级的组件传递数据,那么就要先传递给公共的父级而后在传递给你要传递到的组件位置。
- 这种非父子关系的组件间传递数据,不推荐使用这种层层传递的方式;而是选择使用维护全局状态功能模块(Redux)
一、父组件向子组件传递数据
父组件向子组件传递数据是通过在父组件中引用子组件时,在子组件标签设置传输数据的属性;而子组件中通过 this.props 接受传过来的数据;这样就实现了父组件向子组件的数据传输。
1.1、父组件代码
import React, { Component } from 'react'; import './App.css'; import Child from './child' class App extends Component { constructor(props){ super(props); this.state={ msg:'父类的消息', name:'John', age:99 } } callback=(msg,name,age)=>{ // setState方法,修改msg的值,值是由child里面传过来的 this.setState({msg}); this.setState({name}); this.setState({age}); } render() { return ( <div className="App"> <p> Message: {this.state.msg}</p> <Child callback={this.callback} age={this.state.age} name={this.state.name}></Child> </div> ); } } export default App;
代码说明父组件在使用子组件(Child)的过程中,对子组件传输了两个属性(age和name)和一个方法(callback 先不考虑)。
关键代码
<Child name={this.state.name} age={this.state.age}></Child>
1.2、子组件代码
import React from "react"; class Child extends React.Component{ constructor(props){ super(props); this.state={ name:'Andy', age:31, msg:"来自子类的消息" } } change=()=>{ this.props.callback(this.state.msg,this.state.name,this.state.age); } render(){ return( <div> <div>{this.props.name}</div> <div>{this.props.age}</div> <button onClick={this.change}>点击</button> </div> ) } } export default Child;
代码说明子组件中在 render 中直接使用 this.props 接受父组件传输的数据,并直接使用。不推荐子组件将接受到的数据,再使用this.setSate 方式处理。
关键代码
<div>{this.props.name}</div> <div>{this.props.age}</div>
二、子组件向父组件传输数据
React 框架中子组件向父组件传输数据,要依赖于父组件向子组件传输数据。实际上就是父组件将自己作用域的函数传输给子组件;子组件调用该函数,并将要传输的数据,通过函数的参数的形式,传输给父组件。
2.1、父组件代码
上面的代码示例中,父组件中定义了函数,并将这个函数传输给了子组件。
class App extends Component { ...... callback=(msg,name,age)=>{ // setState方法,修改msg的值,值是由child里面传过来的 this.setState({msg}); this.setState({name}); this.setState({age}); } render() { return ( <div className="App"> <Child callback={this.callback}></Child> </div> ); } } export default App;
父组件将自己作用域的函数传递给子组件,子组件在通过 this.props
调用此函数的过程中,通过参数的方式将数据传输到组组件中。
这里父组件有三个形参msg,name,age;子组件将数据传输过来后,父组件会将其使用 this.setState
方式处理。
2.2、子组件代码
子组件通过使用 this.props 接受到父组件传输过来的函数;并调用此函数通过参数的方法,传输数据给父组件。
class Child extends React.Component{ ...... change=()=>{ this.props.callback(this.state.msg,this.state.name,this.state.age); } render(){ return( <div> <button onClick={this.change}>点击</button> </div> ) } } export default Child;
子组件中创建了一个方法 change()
,此方法和点击事件 onClick
绑定;change()
方法中会调用 this.props.callback()
函数(父组件传输过来的函数);函数的实参就是子组件传输给父组件的数据。
以上就是详解React 父组件和子组件的数据传输的详细内容,更多关于React 父组件和子组件的数据传输的资料请关注狼蚁SEO其它相关文章!
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南