React.js:如何定义默认属性函数
React.js: How to define a default property function?
我的组件使用一个函数来呈现一些内部文本。我想允许我的组件的所有者提供自定义函数作为属性。如果没有提供自定义属性,组件将使用它自己的默认函数。因此,我很自然地转向getDefaultProps
,像这样:
propTypes: function() {
renderText: React.PropTypes.func
};
getDefaultProps: function() {
return {
renderText: this._renderText
};
}
问题在于调用getDefaultProps
时,_renderText
是undefined
。我可以通过检查this.props.renderText
是否被定义并在需要时返回this._renderText
来解决这个问题。但是这感觉不像是React做事的方式。
如果您定义renderText
函数:
getDefaultProps: function() {
return {
renderText: function() {
// do sth
}
};
}
我不认为你可以像你那样使用this
,因为:
getDefaultProps
这个方法在创建任何实例之前被调用,因此不能依赖于
this.prop
来源:https://facebook.github.io/react/docs/component-specs.html getdefaultprops
你可以这样做:
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等
相关文章:
- 用嵌套函数和默认函数定义函数
- Highcharts-如何在自定义格式化程序中获得默认的y轴标签格式化程序
- 当显式定义控制器参数时,默认模型绑定器会发生异常
- 在文本区域禁用javascript定义的keydown事件并恢复默认行为
- 更改ng包含或定义默认ui视图
- 有没有任何方法可以将json对象存储在HTML标记的默认/自定义属性中,比如<tr>
- JavaScript:将所有事件处理程序重置为默认值/禁用自定义处理程序
- angular-index.html只识别默认路由中定义的函数
- 使用可选参数和默认模型定义路由
- 如何定义 JSON 对象值的默认值
- 使用默认值定义构造函数.我这样做对吗?
- 为什么我的模型中的默认属性返回未定义
- 复选框默认值“选中”,使用 jquery 1.9.1 给出未定义的值
- 在谷歌自定义搜索引擎 V2 代码中执行默认查询
- 谷歌分析未定义默认值
- 当未定义默认导出时,从“模块”导入模块是什么,为什么它与将 * 导入为模块不同
- HTML选择元素-自定义默认值?(跨浏览器解决方案)
- 用angularjs的形式定义默认值,验证不起作用
- StructureMap异常代码:202没有为PluginFamily NServiceBus.IBus定义默认实例,N
- React.js:如何定义默认属性函数