React组件通讯基础

本文只是入门级别的读书笔记,大佬请忽略。

  • 父向子组件通讯

    • 通常父组件使用props向子组件传递,然后子组件处理。
    • 通过属性绑定进行通讯,
      父组件:
      import React, {Component} from 'react'
      import Child from 'Child.js'
      
      export default class Parent extends Component { 
      	render() {
      		return (
      			<div> 
      				<Child title= "传递给子组件的信息" /> 
      			</div>
      			)
      	}
      }
      
      
        //		子组件Child.js
        import React from 'react'
        const Child = props =>{
        		return <h1>{props.title}</h1>
        }
        export default Child
      

    在上门的例子中,父组件通过title属性向子组件Child传递值,子组件Child通过this.prop.title就可以获取到父组件的传递值。

React组件间通讯

  • 父子组件通讯
    • 通过属性绑定进行通讯

    • 父组件传递数据给子组件

      • 模拟数据

        • 直接传递
      • 数据交互的数据

        • 数据交互的数据会导致组件至少渲染两次,所以必须进行判断数据是否存在,直接运行数据,会报错
          数据请求的过程
          constructor () {
          super()
          this.state = {
          people: null,//设置一个空对象
          }
          }

              componentDidMount () {//在这个生命周期中请求数据
                  fetch('/data.json')
                      .then( res => res.json() )
                      .then( data => {
                          this.setState({people: data})//获取数据之后还要赋值
                      })
                      .catch( error => console.log( error ))
              }
          
          • 通过属性绑定,将对象传输给子组件,子组件要先判断事先有无属性.
            {this.props.对象名 && this.props.对象名.属性名}
    • 子父组件通讯

      • 父组件通过属性绑定将一个方法传递给子组件,子组件调用这个方法。
        change = ( val ) => {
        this.setState({
        money: val
        })
        }
        //将方法传递给子组件

             <button onClick = {() => {this.props.change(this.state.money)}}> 发工资 </button> 调用方法,将参数传递给父组件
        
    • 非关系组件通讯

      • 在同一个父组件内的两个非关系组件进行通讯
      • 本质就是子父组件通讯加上父子组件通讯。
      • 使用ref链
    • 跨组件通讯

      • context
        先引入createContext
        import React, {Component,createContext} from ‘react’

        const 名称 = createContext()//创建
        
        render() {
                return (
                    <div>
                        <名称.Provider value={this.state.info}>  //使用.provider 并绑定属性传输值
                        </名称.Provider>
                    </div>
                )
            }
          //在子组件中使用<h3> {this.context} </h3>
        
    • 多组件状态共享

      • flux
      • redux
      • mobx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值