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
你能举个例子吗?