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>
    )
}
相关推荐
ai小鬼头1 小时前
百度秒搭发布:无代码编程如何让普通人轻松打造AI应用?
前端·后端·github
漂流瓶jz1 小时前
清除浮动/避开margin折叠:前端CSS中BFC的特点与限制
前端·css·面试
前端 贾公子1 小时前
在移动端使用 Tailwind CSS (uniapp)
前端·uni-app
散步去海边1 小时前
Cursor 进阶使用教程
前端·ai编程·cursor
清幽竹客1 小时前
vue-30(理解 Nuxt.js 目录结构)
前端·javascript·vue.js
weiweiweb8881 小时前
cesium加载Draco几何压缩数据
前端·javascript·vue.js
幼儿园技术家1 小时前
微信小店与微信小程序简单集成指南
前端
我不吃饼干9 天前
鸽了六年的某大厂面试题:你会手写一个模板引擎吗?
前端·javascript·面试
涵信9 天前
第一节 布局与盒模型-Flex与Grid布局对比
前端·css
我不吃饼干9 天前
鸽了六年的某大厂面试题:手写 Vue 模板编译(解析篇)
前端·javascript·面试