1.父传子

1.在父组件中定义数据 2.将父组件中需要传递的数据绑定到组件件的标签上 3.在子组件中通过this.props接收 4.这里的props需要定义类型,是否必须要求

children.jsx

  1. import React, { Component } from 'react'
  2. export default class index extends Component {
  3. state={
  4. person:{
  5. name:"wangsu",
  6. age:12,
  7. grade:90,
  8. class:1,
  9. sex:"male"
  10. }
  11. }
  12. childrenHandle=()=>{
  13. this.props.parent.getChildrenMsg(this,this.state.person)
  14. }
  15. render() {
  16. const {arr}=this.props
  17. return (
  18. <div>
  19. <h2>我是子组件</h2>
  20. <ul>
  21. {
  22. arr.map(item=>{
  23. return <li key={item}>{item}</li>
  24. })
  25. }
  26. </ul>
  27. <button onClick={this.childrenHandle}>子向父传递数据</button>
  28. </div>
  29. )
  30. }
  31. }

parent.jsx

  1. import React, { Component } from 'react'
  2. import Chidren from '../Children'
  3. export default class index extends Component {
  4. state={
  5. arr:["ws",'dd','dddwwww','sss','ffff'],
  6. msg:{}
  7. }
  8. getChildrenMsg=(result,msg)=>{
  9. this.setState({
  10. msg
  11. })
  12. }
  13. render() {
  14. const {arr,msg}=this.state
  15. return (
  16. <div>
  17. <h1>我是父组件</h1> <button onClick={this.parentHandle}>父向子传递值</button>
  18. <ul>
  19. <li>name:{msg.name}</li>
  20. <li>age:{msg.age}</li>
  21. <li>sex:{msg.sex}</li>
  22. <li>grade:{msg.grade}</li>
  23. <li>class:{msg.class}</li>
  24. </ul>
  25. <Chidren arr={arr} parent={this}></Chidren>
  26. </div>
  27. )
  28. }
  29. }

2.子传父

1.在父组件中,将整个父组件传递到子组件标签的parent属性上,此时的整个组件会存在于子组件的props上 2.在父组件中定义一个自定义的事件,事件中有两个参数,第一个参数就是子组件,第二个参数就是子组件传递雇来的数据。 3.在子组件中,通过this.props.parent去调用父组件中定义的那个事件,传递进第一个参数是子组件的this,第二个参数就是子组件传递给父组件的数据。

children.jsx

  1. import React, { Component } from 'react'
  2. export default class index extends Component {
  3. state={
  4. person:{
  5. name:"wangsu",
  6. age:12,
  7. grade:90,
  8. class:1,
  9. sex:"male"
  10. }
  11. }
  12. childrenHandle=()=>{
  13. this.props.parent.getChildrenMsg(this,this.state.person)
  14. }
  15. render() {
  16. console.log(this.props,"xxxxx")
  17. const {arr}=this.props
  18. return (
  19. <div>
  20. <h2>我是子组件</h2>
  21. <ul>
  22. {
  23. arr.map(item=>{
  24. return <li key={item}>{item}</li>
  25. })
  26. }
  27. </ul>
  28. <button onClick={this.childrenHandle}>子向父传递数据</button>
  29. </div>
  30. )
  31. }
  32. }

parent.jsx

  1. import React, { Component } from 'react'
  2. import Chidren from '../Children'
  3. export default class index extends Component {
  4. state={
  5. arr:["ws",'dd','dddwwww','sss','ffff'],
  6. msg:{}
  7. }
  8. getChildrenMsg=(result,msg)=>{
  9. console.log(result)
  10. this.setState({
  11. msg
  12. })
  13. }
  14. render() {
  15. const {arr,msg}=this.state
  16. return (
  17. <div>
  18. <h1>我是父组件</h1> <button onClick={this.parentHandle}>父向子传递值</button>
  19. <ul>
  20. <li>name:{msg.name}</li>
  21. <li>age:{msg.age}</li>
  22. <li>sex:{msg.sex}</li>
  23. <li>grade:{msg.grade}</li>
  24. <li>class:{msg.class}</li>
  25. </ul>
  26. <Chidren arr={arr} parent={this}></Chidren>
  27. </div>
  28. )
  29. }
  30. }