我使用React Native。我已经检查了What is an unhandled promise rejection?,但我根本看不懂。
创建组件时:
render(){
const MenuComponent = (
<MenuScreen CloseSlideMenu={this.SlideMenu.CloseSlideMenu} />
)
...
}
字符串
我得到以下错误:
'可能的未处理Promise拒绝(id:0)TypeError:undefined不是函数(正在计算'_this.OpenSlideMenu.bind(true).then(function(){})'this.OpenSlideMenu()
在constructor()
中声明。
constructor (props, context) {
super(props, context)
this.OpenSlideMenu = this.OpenSlideMenu.bind(true).catch(function(e){
console.log("Promise Rejected");
});
this.CloseSlideMenu = this.CloseSlideMenu.bind(true).catch(function(e){
console.log("Promise Rejected");
});
}
型
这个.drawer在render()方法中声明:
render () {
const MenuComponent = (
<MenuScreen CloseSlideMenu={this.SlideMenu.CloseSlideMenu} />
)
return (
<Drawer
ref={(ref) => this.drawer = ref}
content={MenuComponent}
tapToClose={true}
openDrawerOffset={170}
stles={drawerStyles}
panCloseMask={0.2}
closedDrawerOffset={-3}
styles={drawerStyles}
tweenHandler={(ratio) => ({
main: { opacity: (2-ratio)/2 }
})}>
<GroceryScreen selectedCategory='Todos' OpenSlideMenu={this.OpenSlideMenu} />
</Drawer>
)
}
型
有人能解释一下为什么我有这个错误吗?我该怎么解决这个问题?
2条答案
按热度按时间i2byvkas1#
有几件事不对劲。您正在使用
.bind(true)
绑定一个布尔值作为函数的this
上下文。在函数声明中也使用了
.catch()
。.then()
和.catch()
用于函数调用。同样,如果这是函数的初始声明,那么在声明它之前,您正在尝试对它进行
.bind()
。你需要先申报。我建议你在MDN上阅读有关.bind()和Promise的内容。
这里有一个小例子,希望能帮助你理解这些原则:
字符串
bttbmeg02#
我得到了一个类似的错误,但原因不同:使用useContext从Context文件导入异步函数“myFunc”。
我的错误:未处理的Promise拒绝不是一个函数,而是一个Promise的示例。
字符串
当调用不带参数/变量的“myFunc”时,不要包含括号。将
const output = await myFunc();
更改为const output = await myFunc;
为我修复了它。