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

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

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

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

示例:父组件代码:

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 (
        <>
            
当前数量为:{sum}
点击加1
); } // 导出App组件 export default App;

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

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

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

import React from "react";

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

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

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

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 (
        
子组件的数量:{sum}
) } export default ChildModal;

效果图:

 子组件监听父组件消息,随之变化与不变化_第1张图片子组件监听父组件消息,随之变化与不变化_第2张图片

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

import React, { useEffect, useState } from "react";

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

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

    return (
        
{sum}
) } export default ChildModal;

效果图:

子组件监听父组件消息,随之变化与不变化_第3张图片

你可能感兴趣的:(前端,react,javascript,父子组件)