React 组件传值,函数传递


一.父到子传值

  • props可以接收 数字,字符串,布尔,数组,对象,函数,jsx
  • 子组件通过props接收父组件的值

代码实现

父组件

  • msg 是子组件要接收名称
  • 大括号内是要传递的值
import React from "react"
import One from "../../components/One"
export default () => {
    const getMes = () => {
        console.log("我是父组件的函数");
    }
    return (
        <div>
            <h1>home</h1>
            <hr />
 			<One msg={"我是父组件的值"}  getMes={getMes}/>
        </div>
    )
}

子组件

  • 使用解构赋值,对props解构

import React from "react";
export default ({msg,getMes})=>{

    return  (
        <div>
            <h1>我是子组件A</h1>
            <div>
                <div>接收父组件的值:{msg}</div>
                <button onClick={getMes}>触发父组件函数</button>
            </div>
        </div>
    )
}

页面展示

在这里插入图片描述

二.子到父传值

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

代码实现

子组件


export default ({  childrenClick }) => {
    return (
        <div>
            <h1>我是子组件A</h1>
            <div>
                <button onClick={() => childrenClick("我是子组件中的数据")}>触发子组件函数</button>
            </div>
        </div>
    )
}

父组件

import One from "../../components/One"
export default () => {
    const getSon = (val) => {
        console.log("父页面",val);
    }
    return (
        <div>
            <h1>home</h1>
            <hr />
            <One childrenClick={(val) => getSon(val)} />
        </div>
    )
}

页面展示

在这里插入图片描述

三.兄弟传值

  • 同页面之间兄弟组件传值
  • 把子组件A中的数据传递给子组件B
  • 先把A组件的数据子传父给父组件,在通过父传子给B组件

代码实现

父组件

import React,{useState} from "react"

import One from "../../components/One"
import Two from "../../components/Two"
export default () => {
 const [num, setNum] = useState(0);
    return (
        <div>
            <h1>home</h1>
            <hr />
            <One childrenClick={(val) => setNum(val)} />
            <hr />
            <Two num={num}  />
        </div>
    )
}

组件A

import React,{useState} from "react";
export default ({ childrenClick }) => {
    const [count, setCount] = useState(0);
    const brother = () => {
        setCount(count + 1)
        childrenClick(count + 1)
    }
    return (
        <div>
            <h1>我是子组件A</h1>
            <div>
                <button onClick={() => brother()}>传值B组件函数:{count}</button>
            </div>
        </div>
    )
}

组件B

export default ({ num }) => {
    return (
        <div>
            <h1>我是子组件B</h1>
            <div>
                <div>接收A组件的值:{num}</div>
            </div>
        </div>
    )
}

页面展示

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值