我尝试使用 useState 但不正常工作

I try to use useState but dont works weirdly

我用react的useState来处理“hooks”(是它的名字吗?)

const [users, setUsers] = useState(null);

在下一段代码中,我使用了 setUsers 但没有这样做...

        getUsersApi(queryString.stringify(params)).then(response => {
            console.log(params.page)
            // eslint-disable-next-line eqeqeq
            if(params.page == "1"){
                console.log(response)//line33
                if(isEmpty(response)){
                    setUsers([]);
                }else{
                    setUsers(response);
                    console.log(users);//line38
                }
            }else{
                if(!response){
                    setBtnLoading(0);
                }else{
                    setUsers({...users, ...response});
                    setBtnLoading(false);
                }
            }
            
        })

我在其中插入了一个 console.log 并且显然通过了那里,但是没有设置用户...

这是函数 getUsersApi(),以备不时之需。

export function getUsersApi(paramsUrl){
    console.log(paramsUrl)
    const url = `${API_HOST}/users?${paramsUrl}`
    const params = {
        headers:{
        Authorization: `Bearer${getTokenApi()}`,
        },
    };
    return fetch(url, params).then(response => {
        return response.json();
    }).then(result => {
        return result;
    }).catch(err => {
        return err;
    });
}

这是函数 isEmpty(),以备不时之需。

    function isEmpty(value) {
      if (value == null) {
        return true;
      }
      if (isArrayLike(value) &&
          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
            isBuffer(value) || isTypedArray(value) || isArguments(value))) {
        return !value.length;
      }
      var tag = getTag(value);
      if (tag == mapTag || tag == setTag) {
        return !value.size;
      }
      if (isPrototype(value)) {
        return !baseKeys(value).length;
      }
      for (var key in value) {
        if (hasOwnProperty.call(value, key)) {
          return false;
        }
      }
      return true;
    }

非常感谢你们!!

如果你想知道状态是否已经更新,一定要在依赖数组中设置一个useEffect hook与状态。

import React, { useEffect, useState } from 'react';

useEffect(() => {
   console.log("Users: ", users)
}, [users])

如果这被记录下来,则用户已成功更新。

如果这样做 NOT 被记录,则您没有进入调用 setUsers

else