Javascript 从一个屏幕导航到另一个屏幕时未处理的承诺拒绝
我想从Mtag屏幕导航到充值屏幕,但我面临未处理的错误承诺拒绝。我使用了Javascript 从一个屏幕导航到另一个屏幕时未处理的承诺拒绝,javascript,react-native,Javascript,React Native,我想从Mtag屏幕导航到充值屏幕,但我面临未处理的错误承诺拒绝。我使用了this.props.navigation.navigate('充电),但没有成功。基本上,我听了API的响应,当响应为200时,会显示警报框,屏幕移到下一个屏幕。显示响应,但将屏幕移动到下一个屏幕时会出现错误。有办法吗 TypeError:Undefined不是对象 //这是MAINAPP.JS 从“React”导入React; 从“react native”导入{视图、文本、按钮}; 从“react navigati
this.props.navigation.navigate('充电)
,但没有成功。基本上,我听了API的响应,当响应为200时,会显示警报框,屏幕移到下一个屏幕。显示响应,但将屏幕移动到下一个屏幕时会出现错误。有办法吗
TypeError:Undefined不是对象
//这是MAINAPP.JS
从“React”导入React;
从“react native”导入{视图、文本、按钮};
从“react navigation”导入{createStackNavigator,createAppContainer};
从“/screens/mtag”导入mtag;
从“/屏幕/充值”导入充值;
const AppNavigator=createStackNavigator(
{
Mtag:Mtag,
充电:充电
},
{
初始路由名称:“Mtag”
}
);
const AppContainer=createAppContainer(AppNavigator);
导出默认类App扩展React.Component{
render(){
返回;
}
}
//这是我的mtag.js
//在从API获得响应后,我想从这个屏幕导航到另一个屏幕
从“React”导入React,{useState};
进口{
样式表、文本、键盘、状态栏、列表视图
}从“反应本机”;
从“本机基础”导入{容器、标题、输入、标签、内容、标题、卡片、卡片、按钮、正文};
从“react navigation”导入{createStackNavigator,createAppContainer,withNavigation};
//从“/屏幕/充值”导入充值;
常量mtag:()=>React$Node=()=>{
//const[email,setEmail]=useState();
//const[password,setPassword]=useState();
const[mtag_id,setmtag_id]=useState();
const[token,setToken]=useState();
const[balance,getBalance]=useState();
validateUser=async()=>{
//警报(mtag_id);
待命http://SERVER_API/api/v1/user/login'
,{
方法:'POST',
标题:{
“接受”:“应用程序/json”,
//“内容类型”:“应用程序/x-www-form-urlencoded”
“内容类型”:“应用程序/json”
},
正文:JSON.stringify({“email”:”ABC@YAHOO,COM',password:'ABC123'}),
}).then(loginres=>loginres.json())
。然后(loginresData=>{
//警报(resData.token);
如果(loginresData.status==“200”)
{
//警报(“正常”)
//警报(resData.token)
取('http://SERVER_API/api/v1/recharge/getInfo'
,{
方法:'POST',
标题:{
“接受”:“应用程序/json”,
//“内容类型”:“应用程序/x-www-form-urlencoded”
“内容类型”:“应用程序/json”,
“授权”:loginresData.token,
},
正文:JSON.stringify({“mtag_id”:mtag_id}),
}).then(infores=>infores.json())
。然后(inforesData=>{
如果(inforesData.status==“200”){
警报(inforesData.status)
this.props.navigation.navigate('充电');
}
否则{
警报(inforesData.status)
}
console.log(inforesData);
});
}
其他的
{
警报(loginresData.status);
}
console.log(登录数据);
});
}
返回(
M-Tag充电
setmtag_id(值)}
键盘类型='numeric'
maxLength={8}
/>
充电
);
};代码>您无法在钩子中使用此
关键字。简单使用
props.navigation.navigate('recharge');
您还没有在validateUser函数中使用.catch
。然后
是后续响应,。catch
是拒绝响应。用下面给出的代码替换validateUser函数
validateUser = async () => {
//alert(mtag_id);
await fetch('http://SERVER_API/api/v1/user/login', {
method: 'POST',
headers: {
Accept: 'application/json',
//'Content-Type': 'application/x-www-form-urlencoded'
'Content-Type': 'application/json',
},
body: JSON.stringify({email: 'ABC@YAHOO,COM', password: 'ABC123'}),
})
.then(loginresData => {
//alert(resData.token);
if (loginresData.status == '200') {
//alert('OK')
//alert(resData.token)
fetch('http://SERVER_API/api/v1/recharge/getInfo', {
method: 'POST',
headers: {
Accept: 'application/json',
//'Content-Type': 'application/x-www-form-urlencoded'
'Content-Type': 'application/json',
Authorization: loginresData.token,
},
body: JSON.stringify({mtag_id: mtag_id}),
})
.then(infores => infores.json())
.then(inforesData => {
if (inforesData.status == '200') {
alert(inforesData.status);
props.navigation.navigate('recharge');
} else {
alert(inforesData.status);
}
console.log(inforesData);
});
} else {
alert(loginresData.status);
}
console.log(loginresData);
})
.catch(error => {
console.warn(error);
});
};
从this.props.navigation.navigate('recharge')中删除this
word是否有效代码>?