react中子组件state发生变化触发render函数,父组件怎么感知子组件的变化?

子组件点击了按钮更改了自己的state触发render更新,并没有去更改父组件的state状态,那么父组件要怎么感知到子组件是已经重新render过了?

父组件代码

import React from 'react';
import TodoItem from './TodoItem.js';
class TodoList extends React.Component{
    constructor(){
        super();
    }
    render(){
        return (
            <div>
                <TodoItem/>
            </div>
        )
    }
    
    
}
export default TodoList;

子组件

import React from 'react';

class TodoItem extends React.Component{
    constructor(){
        super();
        this.state = {
            greet:'hi'
        }
        this.handlerChange = this.handlerChange.bind(this);
    }
    render(){
        return (
            <div>
                <div>{this.state.greet}</div>
                <button onClick={this.handlerChange}>改变state</button>
            </div>
        )
    }
    handlerChange(){
        this.setState(()=>{
            return{
                greet:'hello'
            }
        })
    }
}
export default TodoItem;
阅读 8.2k
3 个回答

父组件和子组件的通信使用props ,子组件和父组件的通信使用回调函数

如果父组件需要监听子组件变化,那推荐把状态移到父组件中

向子组件传入一个类似onChange的方法,子组件状态更新,则调用onChangeonChange在父组件中定义,这样不就知道子组件更新咯

推荐问题