我的组件使用函数来呈现一些内部文本。我想允许我的组件的所有者提供自定义函数作为属性。如果未提供自定义属性,则组件将使用它自己的默认功能。很自然地,我这样转向getDefaultProps
:
propTypes: function() {
renderText: React.PropTypes.func
};
getDefaultProps: function() {
return {
renderText: this._renderText
};
}
问题是调用_renderText
时undefined
为getDefaultProps
。
我可以通过检查this.props.renderText
是否已定义并在需要时退回this._renderText
来解决此问题。但他并不像React的做事方式。
答案 0 :(得分:6)
如果定义了renderText
函数:
getDefaultProps: function() {
return {
renderText: function() {
// do sth
}
};
}
我认为你不能像你一样尝试this
,因为:
getDefaultProps
在创建任何实例之前调用此方法,因此不能依赖
this.prop
来源:https://facebook.github.io/react/docs/component-specs.html#getdefaultprops
答案 1 :(得分:1)
您可以使用:
Class Test extends Component{
contrustor(props){
...
}
notify(data){
console.log("Yeah!",data);
}
return (<div>This is context here.</div>)
}
Test.defaultProps={
getNotify:Test.prototype.notify
}
此解决方案在react-router中工作正常,即使没有Redux或Flux等等。