我试图了解功能范围。 _internalFunction
效果很好,但如何调用_externalFunction
?
我在_renderRow中尝试了self=this
然后this._externalFunction
并尝试了() => {this._externalFunction}
但是它没有用。
class sandbox extends Component {
//some code removed for clarity
_renderRow(item) {
const _internalFunction = () => {
Alert.alert('Internal');
};
return (<Text onPress={_internalFunction}>{item}</Text>);
}
_externalFunction() {
Alert.alert('External');
};
}
以下是React Native Playground中的代码: https://rnplay.org/apps/5CIGvA
提前致谢! :)
答案 0 :(得分:0)
在ES6中,您需要手动将this
绑定到实例。以下是React documentation的引用:
在声明为ES6类的React组件中,方法遵循相同的方法 语义作为常规ES6类。这意味着他们没有 自动将
this
绑定到实例。你必须明确 在构造函数中使用.bind(this)
:
因此,您需要在构造函数中绑定您的函数:
constructor() {
super();
this._externalFunction = this._externalFunction.bind(this);
}
然后您可以在组件中使用this._externalFunction
:
_renderRow(item) {
return (<Text onPress={this._externalFunction}>{item}</Text>);
}