将本机 setState 与对象反应
React Native setState with objects
假设我有一个名为 Profile Screen 的功能组件,如下所示:
const ProfileScreen = props => {
const { token, user } = useSelector(state => state.auth);
const [userData, setUserData] = useState({});
let userValidatedInfo = validatedUserInfo(user);
setUserData({...userValidatedInfo});
return <Text>{userData.fullName}</Text>
}
当我访问 <Text>{userData.fullName}</Text>
中对象 userData 的属性之一时,即userData.fullName
它说它是未定义的。我的 setState
调用 (setUserData
) 没有更新当前的 userData
状态
我做错了什么
如果我在调用 setUserData 之前 console.log userValidatedInfo,我会得到以下信息:
Object {
"fullName": "Person's name",
//... more properties
}
我假设 validatedUserInfo
是一个普通的 -sync- 函数,它必须是异步的。除了 validatedUserInfo
.
,您的代码看起来还不错
在 javascript here 中查看有关异步的更多信息。
我认为您在文本组件中直接使用了 userData.fullName
。当组件在 setUserData
之前第一次呈现时,userData 为空。
所以,你可以这样试试,
{userData.fullName && <Text>{userData.fullName}</Text>}
假设我有一个名为 Profile Screen 的功能组件,如下所示:
const ProfileScreen = props => {
const { token, user } = useSelector(state => state.auth);
const [userData, setUserData] = useState({});
let userValidatedInfo = validatedUserInfo(user);
setUserData({...userValidatedInfo});
return <Text>{userData.fullName}</Text>
}
当我访问 <Text>{userData.fullName}</Text>
中对象 userData 的属性之一时,即userData.fullName
它说它是未定义的。我的 setState
调用 (setUserData
) 没有更新当前的 userData
状态
如果我在调用 setUserData 之前 console.log userValidatedInfo,我会得到以下信息:
Object {
"fullName": "Person's name",
//... more properties
}
我假设 validatedUserInfo
是一个普通的 -sync- 函数,它必须是异步的。除了 validatedUserInfo
.
在 javascript here 中查看有关异步的更多信息。
我认为您在文本组件中直接使用了 userData.fullName
。当组件在 setUserData
之前第一次呈现时,userData 为空。
所以,你可以这样试试,
{userData.fullName && <Text>{userData.fullName}</Text>}