React Native中如何通过Axios的then方法获取Express发送的文本?
解决React Native无法获取Express发送的文本内容问题
问题原因
你误用了Fetch API的text()方法获取响应内容,但Axios的响应结构与Fetch不同,Axios会把响应数据封装在data字段中。
解决方案
方案1:适配当前Express代码,直接使用Axios响应的data字段
Express端代码保持不变:
res.send("monday");
React Native端修改then回调中的代码,将e.text()替换为e.data:
let ti = await axios.post("http://localhost:3000/login", { celular: celular, senha: senha, }, { headers: { Accept: "application/json", "Content-Type": "application/json;charset=UTF-8", } } ).then(e => { Alert.alert(e.status.toString()); // 注意:Alert.alert接收字符串,需将数字类型的status转为字符串 Alert.alert(e.data); // 直接获取Express发送的"monday"文本 })
方案2:改用JSON格式传输(推荐用于实际项目)
如果希望接口返回更规范的JSON格式,修改Express端代码:
// 方式1:返回字符串的JSON格式 res.json("monday"); // 方式2:返回带键值的对象(便于后续扩展字段) res.send({ message: "monday" });
对应React Native端的获取方式:
- 若用方式1,依旧通过
e.data获取"monday" - 若用方式2,通过
e.data.message获取"monday"
内容的提问来源于stack exchange,提问作者Diego Alves
相关产品推荐
相关产品推荐

