我有一个我想要修改的自定义typeahead
组件&我想从父级传递自定义onBlur
方法。
如果getDefaultProps
未传递,我已定义onBlur
:
getDefaultProps: function () {
console.log(this.handleBlur) // undefined
return {
onChange: function () {},
onBlur: this.handleBlur
}
}
handleBlur
是我想要访问的组件内部的方法。我如何访问组件内部的方法?
答案 0 :(得分:0)
在实例化Class之前,内部React获取默认道具。这意味着getDefaultProps函数是类的静态方法。如果使用createReactClass
创建反应组件,那么它就不是一个静态方法。
在javascript中有不同的创建静态函数或变量的方法:
// 1. Old JS:
function Foo() {}
Foo.staticFunction = function(){}
var foo = new Foo();
// typeof Foo.staticFunction === 'function'
// typeof foo.staticFunction === 'undefined'
// 2. ES6:
class Foo {
static myFunction = () => { ... }
}
当您使用ES6时,您可以编写类似
的内容// add the onBlur function outside of the class scope
const handleBlur = event => { /* your fallback blur handler */ }
class MyComponent extends Component {
static defaultProps = {
handleChange() {},
handleBlur,
};
}
另一种方法是在构造函数中设置blurHandler:
class MyComponent extends Component {
constructor(props, context) {
super(props, context)
if (!this.props.blurHandler) {
this.blurHandler = this.defaultBlurHandler
}
}
defaultBlurHandler = () => { /* do your stuff here */ }
}