挖掘React子组件的componentDidUpdate

时间:2019-05-11 20:45:22

标签: reactjs

给出对子项的引用(从我无法覆盖的库中定义),是否已经提供了一个内置钩子来利用子项的componentDidUpdate?

如果我可以定义子代,则相当于:

Parent extends React.Component {
    constructor() {
        this.child = React.createRef();
    }

    render() {
        return (<Child ref={this.child});
    }

}

Child extends React.Component {
    componentDidUpdate(prevProps, prevState, snapshot) {
        this.props.onComponentDidUpdate(prevProps, prevState, snapshot);
    }
}

1 个答案:

答案 0 :(得分:1)

我认为这不能(正确地)完成。如果我理解正确,则不会调用父级中的componentDidUpdate,因为在更改子级时,实际上不会更新父级。仅应调用子组件及其子componentDidUpdate方法。

可以提出一些奇怪的解决方案(例如,通过该componentDidUpdate修补猴子ref,在父级中处理,然后调用子级处理程序),但这听起来很脆弱,而您d破坏组件封装并使您的父子组件紧密耦合。您可能还想扩展您的问题,以更好地解释为什么需要这样做。我对React的经验是,如果您尝试做一些不可能的事情,那可能是因为您缺少了一些东西。