我尝试使用 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
我用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