首页 > 解决方案 > 反应 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变量记录“未定义”错误。有任何想法吗?

标签: reactjsobjectauthenticationsetstate

解决方案


您不能直接作为 var 访问状态。您需要访问状态和属性:

console.log(state.userData);

此外,在您的代码中,当您打印 state.userData 时,您可能会看到旧值,因为 setState 是一个异步函数。


推荐阅读