axios post 请求中的 setState 钩子不起作用

时间:2021-07-31 12:33:15

标签: reactjs axios react-hooks use-state

const Login=(props)=>{

const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [user, setUser] = useState({});


const login = (e)=>{
    e.preventDefault();
    axios.post('/login',{email, password})
    .then(response => {
        setUser(response.data)
        console.log(response.data, user, "user data");
    }).catch(err => {
        console.log(err);
    })
}

this is the empty user data i

这是我的登录请求代码,它获取数据并将其记录在控制台中,但它不想设置用户

2 个答案:

答案 0 :(得分:1)

因为 setUser 是异步的。所以新状态只在组件重新渲染时更新。您可以通过在 console.log 函数外移动 login 来检查

console.log(user, "user data");
return(...)

答案 1 :(得分:0)

您可以在组件重新渲染后使用 useEffect 检查状态:

useEffect(() => {
  console.log(user);
}, [user])