react-native - 当我获取数据时,我可以看到状态已设置,但是当我从状态调用数据时,它显示对象未定义
问题描述
这是我使用 this.state.user.anything 时的代码,它只是向我显示它是空的。任何帮助将不胜感激。感谢您的时间。
我没有得到任何线索来解决它。
export default class details extends React.Component {
constructor(props) {
super(props);
this.state = {
userData: null,
user: null,
};
this.getUsers();
}
getUsers = async () => {
let urlUsers = "https://jsonplaceholder.typicode.com/users";
let req = await fetch(urlUsers);
let res = await req.json();
this.setState({
userData: res,
});
for (let i = 0; i < res.length; i++) {
if (this.state.userData[i].id == this.props.route.params.id) {
await this.setState({
user: {
name: this.state.userData[i].name,
uid: this.state.userData[i].id,
phone: this.state.userData[i].phone,
email: this.state.userData[i].email,
website: this.state.userData[i].website,
username: this.state.userData[i].username,
},
});
}
}
console.log(this.state.user);
};
render() {
return (
<View>
<Text>User Id : {this.state.user.uid}</Text>
<Text>Name : {this.state.user.name}</Text>
<Text>email : {this.state.user.email}</Text>
<Text>phone : {this.state.user.phone}</Text>
<Text>Website : {this.state.user.website}</Text>
<Text>username : {this.state.user.username}</Text>
</View>
);
}
}
解决方案
这背后的原因是获取用户数据并再次重置状态需要时间,并且该render
方法会立即调用,因此它会崩溃。这可能会有所帮助
render() {
return this.state.user ? (
<View>
<Text>User Id : {this.state.user.uid}</Text>
<Text>Name : {this.state.user.name}</Text>
<Text>email : {this.state.user.email}</Text>
<Text>phone : {this.state.user.phone}</Text>
<Text>Website : {this.state.user.website}</Text>
<Text>username : {this.state.user.username}</Text>
</View>
) : null;
}
推荐阅读
- javascript - 音乐机器人 discord.js 问题
- java - Java 8 资源包找不到立即创建的文件
- ios - 在 SwiftUI 导航栏中嵌入视图作为标题
- sql - Varchar 类型等于数字
- css - 在反应组件中重置样式
- windows - 无法使用安装了启用 Hyper-V 和 WSL2 的 VirtualBox 启动 Windows 10 来宾
- reactjs - VS2019 中的自动完成 JSX html 标签
- python - 使用自定义方法保存/加载 Keras 模型
- excel - 将同一列从多个工作表复制到新工作表
- android - Flutter 移动 UI 元素