我有一个模块:
import {ReferenceInputController} from 'ra-core'
我需要重新定义它为 componentWillReceiveProps
,但是我不想复制整个组件并使其自定义。有没有更简单的方法来重新定义它?比如创建一个扩展ReferenceInputController
等的新组件……?
答案 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(如果您希望看到此效果)