React数据通信父传子和子传父的使用

简介: React数据通信父传子和子传父的使用

组件中的props

在react中,props的特点是:
1.可以给组件传递任意类型的数据
2.props是只读的对象,只能够读取属性的值,无法修改对象
如过我们强行修改数据,会报错,告诉我们该属性是只读属性。
ps:在类组件中,如果写了构造函数,应该将props传递给super().
否则无法在构造函数中获取到props

函数组件-父传子

子组件.js
const FunCom = (props) => { 
    return (
        <div>
            <h2>我是函数组件</h2>
            <p>我叫{ props.name}</p>
        </div>
    )
}
export default FunCom
页面使用
import React from 'react';
import ReactDOM from 'react-dom'; 
<!-- 引入 -->
import FunCom from  './components/FunCom'
ReactDOM.render(<FunCom name="李大为"/>, document.getElementById('root'))

类组件-父传子

子组件
import React from "react";
class FunCom extends React.Component{
    render() { 
        return (
            <div>
                <h2>我是函数组件</h2>
                <p>我叫{ this.props.name}</p>
            </div>
        )
    }
}
export default FunCom
页面使用
import React from 'react';
import ReactDOM from 'react-dom'; 
<!-- 引入 -->
import FunCom from  './components/FunCom'
ReactDOM.render(<FunCom name="李大为"/>, document.getElementById('root'))

函数组件与类组件接收参数的区别

函数组件接受参数直接是:props.xxx
类组件接受参数直接是: this.props.xxx

组件可以传递那些值?

可以传递:可以传递数字, xxx={19}
html,函数等等....
详细代码如下
父组件
import React from 'react'; //这个是react这个包,我们是需要的
import ReactDOM from 'react-dom'; //这个是react的虚拟dom
import FunCom from './components/FunCom'
ReactDOM.render(<FunCom name="李大为" age={19} fn={() => { console.log('我被出发了')}} tag={<h2>我是H2</h2>}  />,
  document.getElementById('root'))
子组件
import React from "react";
class FunCom extends React.Component{
    render() { 
        console.log(this.props)
        return (
            <div>
                <h2>我是函数组件</h2>
                <p>我叫{this.props.name}</p>
                { this.props.tag}
            </div>
        )
    }
}
export default FunCom

子组件传递数据父组件

1.父组件提供一个回调函数(用于接受数据)
2.将该函数作为属性的值,传递给子组件
儿子组件
import React from "react";
class FunCom extends React.Component{
    state = {
        msg:'儿子给父亲的数据'
    }
    // 将数据传递给父组件
    giveFtaher = () => { 
        this.props.giveChildren(this.state.msg)
    }
    render() { 
        return (
            <div>
                <p>我是函数组件</p>
                <button onClick={this.giveFtaher}>给父组件</button>
            </div>
        )
    }
}
export default FunCom
父组件
import React from 'react'; //这个是react这个包,我们是需要的
import ReactDOM from 'react-dom'; //这个是react的虚拟dom
import FunCom from './components/FunCom'
class PartentHello extends React.Component {
  // 当点击按钮的收,子组件会触发这个方法
  getMsg = (data) => {
    console.log('接收到子组件的数据',data)
  }
  render() { 
    return (
      <div>
        <p>我是主页面</p>
        <FunCom giveChildren={ this.getMsg}></FunCom>
      </div>
    )
  }
}
ReactDOM.render(<PartentHello></PartentHello>,document.getElementById('root'))

遇见问题,这是你成长的机会,如果你能够解决,这就是收获。

相关文章
|
6月前
|
JavaScript 前端开发 小程序
Vue、React和小程序中的组件通信:父传子和子传父的应用
Vue、React和小程序中的组件通信:父传子和子传父的应用
81 0
|
前端开发 JavaScript 小程序
Vue、React和小程序中的组件通信:父传子和子传父
Vue、React和小程序中的组件通信:父传子和子传父
83 0
|
前端开发
react中父子组件传值详解,如何进行传值校验(父传子,子组件改变父组件的值)
本篇主要给大家介绍react中父子组件传值详解,如何进行传值校验
640 0
|
前端开发
React工作31:react父传子
React工作31:react父传子
84 0
|
前端开发
03 React 组件传值父传子
03 React 组件传值父传子
|
6月前
|
设计模式 前端开发 数据可视化
【第4期】一文了解React UI 组件库
【第4期】一文了解React UI 组件库
351 0
|
6月前
|
存储 前端开发 JavaScript
【第34期】一文学会React组件传值
【第34期】一文学会React组件传值
72 0
|
6月前
|
前端开发
【第31期】一文学会用React Hooks组件编写组件
【第31期】一文学会用React Hooks组件编写组件
74 0
|
6月前
|
存储 前端开发 JavaScript
【第29期】一文学会用React类组件编写组件
【第29期】一文学会用React类组件编写组件
71 0
|
6月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
119 0