子组件监听父组件消息,随之变化与不变化

父组件通过props传递给子组件消息,子组件有两种情况接收处理:

1、子组件监听父组件props的变化,同时随之变化【可以直接取props中的值展示,也可以监听值得变化处理】

2、子组件初始化时更新,随后不再随父组件变化

示例:父组件代码:

javascript 复制代码
import React, { useEffect, useState } from "react";
import ChildModal from "./components/childModal";
import "./index.less";
 
function App() {
    const [sum, setSum] = useState(0);

    const addSum = () => {
        setSum(sum + 1);
    }

    return (
        <>
            <div>当前数量为:{sum}</div>
            <div className="container" onClick={addSum}>点击加1</div>
            <ChildModal sum={sum} />
        </>
    );
}

// 导出App组件
export default App;

第一种情况示例【子组件监听父组件props的变化,同时随之变化】子组件代码:

可以直接取props中的值展示,也可以监听值得变化处理

a、【直接取props中的值】展示代码如下:

javascript 复制代码
import React from "react";

const ChildModal = (props) => {
    console.log('props', props);

    return (
        <div>子组件的数量:{props.sum}</div>
    )
}
export default ChildModal;

b、【监听props值得变化】展示代码如下:

javascript 复制代码
import React, { useEffect, useState } from "react";

const ChildModal = (props) => {
    console.log('props', props);
    const [sum, setSum] = useState(-1);

    useEffect(() => {
        setSum(props.sum);
    }, [props.sum])

    return (
        <div>子组件的数量:{sum}</div>
    )
}
export default ChildModal;

效果图:

第二种情况示例【子组件初始化时更新,随后不再随父组件变化】子组件代码:

javascript 复制代码
import React, { useEffect, useState } from "react";

const ChildModal = (props) => {
    console.log('props', props);
    const [sum, setSum] = useState(-1);

    useEffect(() => {
        setSum(props.sum);
    }, [])

    return (
        <div>{sum}</div>
    )
}
export default ChildModal;

效果图:

相关推荐
哟哟耶耶2 小时前
React-04React组件状态(state),构造器初始化state以及数据读取,添加点击事件并更改state状态值
前端·javascript·react.js
kiramario2 小时前
用IconContext.Provider修改react-icons的icon样式
前端·javascript·react.js
destinyol2 小时前
React首页加载速度优化
前端·javascript·react.js·webpack·前端框架
程序员小续2 小时前
React 多个 HOC 嵌套太深,会带来哪些隐患?
java·前端·javascript·vue.js·python·react.js·webpack
大猫会长3 小时前
用AbortController取消事件绑定
前端
程序员小杰@3 小时前
AI前端组件库Ant DesIgn X
开发语言·前端·人工智能
致微4 小时前
Vue项目 bug 解决
前端·vue.js·bug
慕斯策划一场流浪4 小时前
fastGPT—nextjs—mongoose—团队管理之部门相关api接口实现
前端·javascript·html·fastgpt部门创建·fastgpt团队管理·fastgpt部门成员更新·fastgpt部门成员创建
我自纵横20235 小时前
事件处理程序
开发语言·前端·javascript·css·json·ecmascript
坊钰5 小时前
【MySQL 数据库】数据类型
java·开发语言·前端·数据库·学习·mysql·html