在外部组件中重新定义componentWillReceiveProps

时间:2018-07-29 07:06:42

标签: reactjs

我有一个模块:

import {ReferenceInputController} from 'ra-core'

我需要重新定义它为 componentWillReceiveProps ,但是我不想复制整个组件并使其自定义。有没有更简单的方法来重新定义它?比如创建一个扩展ReferenceInputController等的新组件……?

1 个答案:

答案 0 :(得分:0)

假设ReferenceInputController扩展了React.Component,那么您应该能够使用常规的类继承来实现这一点。

为说明这一点,请考虑下面的Foo类。 在这里,您可以看到它扩展了基类ReferenceInputController,同时还为componentWillReceiveProps提供了自定义逻辑。此自定义逻辑将代替componentWillReceiveProps中定义的等效ReferenceInputController方法:

class Foo extends ReferenceInputController {

    /* 
       Redefinition of componentWillReceiveProps logic for Foo extension
       of ReferenceInputController base class goes here
    */
    componentWillReceiveProps(nextProps) {

        console.log('Custom logic for Foo that is run during componentWillReceiveProps');
    }

    /*
    The render method defined in your ReferenceInputController base class, as well as 
    any other component lifecycle methods defined in ReferenceInputController will be 
    invoked when Foo is rendered

    render() {
        ...
    }
    */
}

然后,您将像使用Foo一样使用(或渲染)ReferenceInputController

<div>
   <Foo ... />
</div>

Here is a jsFiddle(如果您希望看到此效果)