export default someclass extends React.component{
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide',keyboardhide);
}
keyboardhide(){
this.somefunc();
}
somefunc(){
if(mode=='up'){
Animated.timing(
this.state.animate.marginTop,
{
toValue:0,
duration: 2000,
}
).start();
Animated.timing(
this.state.animate.width,
{
toValue:this.screenmanipulate(100,'width'),
duration: 2000,
}
).start();
}
else {
Animated.timing(
this.state.animate.marginTop,
{
toValue:top,
duration: 2000,
}
).start();
Animated.timing(
this.state.animate.width,
{
toValue:width,
duration: 2000,
}
).start();
}
render{
....
.....
}
如果我关闭了键盘,则会抛出未定义 somefunc()的错误,但 console.log()正常工作,我不知道我在哪里出问题了,
我的期望: 关键事件将触发动画
但是发生了什么事 错误未定义不是this.somefunc()
的对象答案 0 :(得分:2)
可以绑定以下代码吗?
_keyboardDidHide = () => {
this.somefunc();
};
答案 1 :(得分:2)
您可以尝试将someFun
移到keyboardhide
方法之前。以下是我最喜欢的代码:
componendDidMount(){
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide',this.keyboardhide);
}
componentWillUnmount(){
this.keyboardDidHideListener.remove()
}
someFun = () => {
// you code
}
keyboardhide = () => {
this.somefunc();
}
默认情况下,箭头函数将其绑定,但是您定义方式的方法是不将其绑定。您必须手动将其绑定。我建议您使用箭头功能。有关绑定的更多信息,您可以看到此document
constructor(props) {
super(props);
this.keyboardhide.bind(this);
}
javascript中的方法定义顺序很重要。为此,您可以看到此answer。它很好地解释了。