• React-组件传值


    一、父传子

      1、在 state 中准备要传递给子组件的数据

      2、以属性的方法将值传递给子组件使用的标签位置

      3、在子组件内部使用 this.props 接收父组件传递过来的数据

    import React from 'react'
    
    class Father extends React.Component {
      // 1、在 state 中准备要传递给子组件的数据
      state = {
        name: '亚瑟'
      }
      render() {
        return(
          <div>
            {/* 2、以属性的方法将值传递给子组件使用的标签位置 */}
            <Son name={this.state.name} />
          </div>
        )
      }
    }
    
    class Son extends React.Component {
      render() {
        return(
          <div>
            {/* 3、在子组件内部使用 this.props 接收父组件传递过来的数据 */}
            父组件传递的值:{this.props.name}
          </div>
        )
      }
    }
    
    export default Father

    二、子传父

      1、在父组件中声明一个回调函数

      2、将父组件中声明的函数当成 props 属性值传递给子组件

      3、子组件通过 props 调用回调函数

      4、将子组件的数据作为参数传递给回调函数

    import React from 'react'
    
    class Father extends React.Component {
      state = {
        parMsg: ''
      }
      // 1. 在父组件中声明一个回调函数 
      parFunc = (msg) => {
        // 4.将子组件的数据作为参数传递给回调函数 
        console.log(msg)
        this.setState({
          parMsg: msg
        })
      }
      render() {
        return(
          <div>
            父组件:{this.state.parMsg}
            {/* 2.将回调函数当成 props 属性值传递给子组件 */}
            <Son getPar={this.parFunc} />
          </div>
        )
      }
    }
    
    class Son extends React.Component {
      state = {
        sonMsg: 18
      }
      sonFunc = () => {
        {/* 3.子组件通过 props 调用回调函数 */}
        this.props.getPar(this.state.sonMsg)
      }
      render() {
        return(
          <div>
            子组件:
            <button onClick={this.sonFunc}>点击传值给父组件</button>
          </div>
        )
      }
    }
    
    export default Father

    三、兄弟传值

      兄弟之间的传值就是:首先 子组件1 向 父组件 传值,然后 父组件 传值给 子组件2

    import React from 'react'
    
    /**
     * 完成功能:son1 传值给 son2
     * 传值的过程(子-父-子)
     *  将 子组件1 的值传递给父组件,是子向父传值的方法 也就是回调函数
     *  父组件向 子组件2 发送接收到的 子组件1的值,是父向子传值的方法 也就是 props
     */
    
    class Father extends React.Component {
      // 5.在父组件中定义数据
      state = {
        num: ''
      }
    
      // 2.父组件开始定义一个回调函数,接收 son1 传递的数据
      getFunc = (msg) => {
        // 6.在回调函数中接收 son1 传递的数据并赋值给 state 中的数据
        this.setState({
          num: msg
        })
      }
    
      render() {
        return(
          <div>
            <h4>我是父组件</h4>
            <hr/>
            {/* 1.将两个组件全部在父组件中进行使用 */}
            {/* 3.将声明的回调函数当成 props 传递给 son1 组件 */}
            <Son1 getParFunc={this.getFunc} />
            <hr/>
            {/* 7.将 son1 传递过来的数据传递给 son2 */}
            <Son2 num={this.state.num} />
          </div>
        )
      }
    }
    
    class Son1 extends React.Component {
      state = {
        son1Num: '20'
      }
      getSonFunc = () =>{
        // 4.在 son1 子组件中调用父组件传值的回调函数,并传值
        this.props.getParFunc(this.state.son1Num)
      }
      render () {
        return (
          <div>
            <h4>我是子组件1</h4>
            <button onClick={this.getSonFunc}>点击传递给子组件2</button>
          </div>
        )
      }
    }
    
    class Son2 extends React.Component {
      render () {
        return(
          <div>
            <h4>我是子组件2</h4>
            {/* 8.son2 接收 son1 传递过来的数据 */}
            {this.props.num}
          </div>
        )
      }
    }
    
    export default Father
  • 相关阅读:
    打印空格
    进程间的通信
    堆排序算法
    大小端的判断
    bash help
    [Android] How to disable the screen orientation?
    图片的静态动态显示效果
    WPF Threads: Build More Responsive Apps With The Dispatcher
    用node.js+express自建网站发布静态网页
    利用Apache mod_expires 与 mod_headers 实现文件缓存及mod_deflate压缩输出
  • 原文地址:https://www.cnblogs.com/xiaowzi/p/12355781.html
Copyright © 2020-2023  润新知