react 父子组件通信 基础

父传子

使用props

js 复制代码
import { useState } from 'react'

function Parent {
    const [message, setMessage] = useState('react')

    return (
        <>
            <SonA message={message} />
            <SonB message={message} />
        </>
    )
}

function SonA(props) {
    return <div>子组件A: {props.message}</div>
}

function SonB({ message }) {
    return <div>子组件B: {message}</div>
}

子传父

子组件调用父组件传递过来的函数,并且把想要传递的数据当成函数的实参传入即可

js 复制代码
function Parent() {
    const getSonMessage = (message) => {
        console.log(message)
    }

    return (
        <SonFun
            getSonMessage={getSonMessage}
        />
    )
}

function SonFun(props) {
    const { getSonMessage } = props

    const handleClick = () => {
        getSonMessage('new message')
    }

    return (
        <button onClick={handleClick}>点击传递数据</button>
    )
}

兄弟组件之间的通信

通过状态提升机制,利用共同的父组件实现兄弟组件通信

js 复制代码
import { useState } from 'react'

function Parent() {
    const [message, setMessage] = useState('')

    const getSonMessage = (message) => {
        setMessage(message)
    }

    return (
        <>
            <SonA message={message}></SonA>
            <SonB getSonBMessage={getSonMessage} />
        </>
    )
}

function SonB(props) {
    const { getSonBMessage } = props

    const handleClick = () => {
        getSonBMessage('message from B')
    }
    return (
        <button onClick={handleClick}>点击传递数据</button>
    )
}

function SonA(props) {
    const { message } = props
    return (
        <div>{message}</div>
    )
}
相关推荐
IT_陈寒1 分钟前
Python的GIL把我坑惨了,多线程跑得比单线程还慢
前端·人工智能·后端
前端snow24 分钟前
ai agent --- 多agent框架之图编排引擎-langgraph
前端
竹林81827 分钟前
OmniPic Studio v3.2.1 核心技术架构与全平台发版解析文档
前端·浏览器
JamesZhang8007827 分钟前
页面内存只涨不跌? 一次泄漏排查, 牵出 WeakMap 的诞生
前端
Z小明31 分钟前
第 6 章 组件进阶
前端·vue.js
江华森33 分钟前
HTTP请求的完整过程详解:从DNS解析到TCP挥手的微秒级实战分析
前端
南青34 分钟前
Vue 3 中后台实战:我踩过的 10 个坑和最佳实践
前端
江华森36 分钟前
HTTPS协议详解——SSL/TLS握手、证书与加密通信
前端
江华森42 分钟前
从一个HTTP请求看网络分层原理:基于华为云ECS的真实抓包实战
前端
江华森44 分钟前
TCP协议详解——三次握手、四次挥手与连接状态
前端