Javascript 状态未设置为有效
我有一个函数可以从本地存储中获取数据,并将该本地存储值设置为状态,但该值不设置状态 这是我的密码Javascript 状态未设置为有效,javascript,reactjs,react-native,react-hooks,Javascript,Reactjs,React Native,React Hooks,我有一个函数可以从本地存储中获取数据,并将该本地存储值设置为状态,但该值不设置状态 这是我的密码 const [mobileNum, setMobilenum] = useState(); useEffect(() => { getDatalocal(); }, []); async function getDatalocal() { // get data from local try { let mobileNum
const [mobileNum, setMobilenum] = useState();
useEffect(() => {
getDatalocal();
}, []);
async function getDatalocal() { // get data from local
try {
let mobileNumRes = await AsyncStorage.getItem('@number_Token')
setMobilenum(mobileNumRes) // set mobile number for state
console.log("mobile num ======================================>>>", mobileNum)
} catch (error) {
console.log("error in get mobile no", error)
}
}
我正在调用useEffect中的此函数,是否有人能告诉我我做错了什么,并请帮助我解决此问题
setMobilenum
是异步方法,因此您无法在setMobilenum
之后立即获得mobileNum
的更新值。您应该通过添加依赖项mobileNum
在另一个useEffect中获得它
const [mobileNum, setMobilenum] = useState();
useEffect(() => {
getDatalocal();
}, []);
async function getDatalocal() { // get data from local
try {
let mobileNumRes = await AsyncStorage.getItem('@number_Token')
setMobilenum(mobileNumRes)
} catch (error) {
console.log("error in get mobile no", error)
}
}
useEffect(() => {
console.log("mobile num ==============>>>", mobileNum)
}, [mobileNum]);
setMobilenum
是异步方法,因此不能在setMobilenum
之后立即获取更新后的mobileNum
值。您应该通过添加依赖项mobileNum
在另一个useEffect中获得它
const [mobileNum, setMobilenum] = useState();
useEffect(() => {
getDatalocal();
}, []);
async function getDatalocal() { // get data from local
try {
let mobileNumRes = await AsyncStorage.getItem('@number_Token')
setMobilenum(mobileNumRes)
} catch (error) {
console.log("error in get mobile no", error)
}
}
useEffect(() => {
console.log("mobile num ==============>>>", mobileNum)
}, [mobileNum]);
您需要发布所有相关代码,我们无法提供比您提供的更多的帮助。您是否使用
const[mobileNumRes,setMobilenum]=setState(…)
?如果是这样,请参考我的答案。我将添加其他代码部分也参考我的答案,这与UseState的异步方法有关William Wang的答案正确,状态设置不同步正确的值在下次渲染之前不会出现。您需要发布所有相关代码,我们无法提供比您提供的更多的帮助。您是否使用const[mobileNumRes,setMobilenum]=setState(…)
?如果是这样,请参考我的答案。我将添加其他代码部分也请参考我的答案,这与UseState的异步方法有关William Wang的答案正确,状态设置不同步正确的值在下次渲染之前不会出现。如何在useEffect数组中设置变量?是状态变量的名称。在你的例子中,mobileNum
我在useEffect中调用getDatalocal()函数,那么我如何调用我在回答中提到的函数中的变量,你无法得到更新的mobileNum
。使用另一个useffect
可以举个例子吗?如何在useffect数组中设置变量?是状态变量的名称。在你的例子中,mobileNum
我在useEffect中调用getDatalocal()函数,那么我如何调用我在回答中提到的函数中的变量,你无法得到更新的mobileNum
。使用另一个useffect
你能举个例子吗?