我在我的应用程序中使用反应原生链接。
class AudioExample extends Component {
componentDidMount(){
Linking.addEventListener('url', this.handleDeepLink);
}
handleDeepLink(e){
console.log(e.url);
this.setState({url: e.url}); // Doesn't work here, because this it is not AudioExample class!!
}
}
我如何使用this.setState({url: url}(; in handleDeepLink??
一种选择是将上下文与 Function.prototype.bind 显式绑定:
componentDidMount(){
Linking.addEventListener('url', this.handleDeepLink.bind(this));
}
另一种是使用箭头功能:
componentDidMount(){
Linking.addEventListener('url', event => this.handleDeepLink(event));
}
实际上还有更多的方法,但这是最好的两种。
您可能需要
将函数绑定到此对象
constructor(props){
super(props)
this.handleDeepLink = this.handleDeepLink.bind(this)
}