reactjs - 反应 setState {} 没有设置变量
问题描述
我有以下代码用于主视图和用户登录:
export class MainView extends React.Component {
constructor(){
super();
this.state = {
array: [],
user: null,
userData: {},
};
}
setUserData(user) {
if (user) {
this.setState({ userData: user.user });
console.log(user.user);
console.log (userData); /* errors in console */
} else {
console.log('userData not set');
}
}
onLoggedIn(authData) {
this.setState({ user: authData.user.Username });
/* setting localstorage key:item */
// console.log(authData);
localStorage.setItem('token', authData.token);
localStorage.setItem('user', authData.user.Username);
this.getArrayObjects(authData.token);
this.setUserData(authData);
}
使用 Passport 获取身份验证数据和令牌。我不明白为什么它会在 setUserData 函数中记录user.user ,但会在同一函数中为userData变量记录“未定义”错误。有任何想法吗?
解决方案
您不能直接作为 var 访问状态。您需要访问状态和属性:
console.log(state.userData);
此外,在您的代码中,当您打印 state.userData 时,您可能会看到旧值,因为 setState 是一个异步函数。
推荐阅读
- automation - 使用量角器下载文件以配置 ChromeOptions
- jquery - 测试茶匙:预期真等于假
- symfony4 - 如何将 Symfony 次要版本从 4.2 升级到 4.3
- java - 如何在java中获得剩余部分
- java - 如何从 javacompile 错误中自定义 gradle 错误消息
- javascript - Recursively Search Through a Flat Array
- c# - 如何在 Scroll 上更改 NavigationPage
- node.js - 使用 Angular 项目中的 @google-cloud 功能
- build - NMAKE:如何强制调试构建?[7ZIP]
- php - 在 cli-config.php 中使用 ENUM