React--React中组件间的如何通信?

本文详细介绍了React中组件间的通信方法,包括父子组件通过props传递值,子父组件使用callback,父孙组件的两种通信方式以及无关组件间的通信,如通过共同父组件、全局状态库和发布订阅模式。

我们之前说过React是一个组件至上的技术栈,所以,组件之间的通信就是大家关注的话题。主要有以下几种:

父子组件

父子组件的传值通过props来实现。

var parent = () => {
    let name = "I'm Lee!"
    return (
        <div>
            <Child name="{name}"/>
        </div>
    )
}

var child = (props) => {
    return (
        <div>
            {
                props.name
            }
        <div>
    )
}

子父组件

子父组件的通信主要是通过callback来实现。

var parent = () => {
    const onChildClick = (item) => {
        console.log(item) //    点我
    }
    return (
        <div>
            <Child callback={onChildClick}/>
        </div>
    )
}

var child = props => {
    return (
        <div>
            <button onClick={ props.callback('点我') }>点我</button>
        </div>
    )
}

父孙组件

父孙组建有俩中方式:
1.以父子组件传值的方式,层层向下传递;
2.context上下文的方式:

const context = createContext()
var parent = () => {
    const [count, setCount] = useState(0)
    return (
        <div>
            <context.Provider value={ count }>
                <Child />
            </context.Provider>
        </div>
    )
}
var child = () => {
    return (
        <div>
            <Son />
        </div>
    )
}
var son = () => {
    return (
        <context.Consumer>
            {
                count => <p>{count}</p>
            }
        </context.Consumer>
    )
}

无关(兄弟)组件

非嵌套关系的组件通信主要有以下三种方式:
1.兄弟组件,可以通过找到共同的父组件,通过父子,子父组件的方式实现通信
2.可以通过redux, mobx, recoil等全局状态库来实现全局状态管理
3.可以通过自定义事件(发布订阅)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leoxiaoge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值