Реагируйте на Native setState с объектами - PullRequest
1 голос
/ 14 марта 2020

Допустим, у меня есть функциональный компонент, называемый 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>
}

Когда я go для доступа к одному из свойств объекта userData в <Text>{userData.fullName}</Text>, то есть userData.fullName это говорит, что это не определено. Что я делаю не так с моим вызовом setState (setUserData), что он не обновляет текущее состояние userData

Если я передам console.log userValidatedInfo перед вызовом setUserData, я получу следующее:

Object {
    "fullName": "Person's name",
    //... more properties
}

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Я полагаю, validatedUserInfo - это нормальная функция -syn c, она должна быть асинхронной c. Ваш код выглядит нормально, за исключением validatedUserInfo.

Подробнее об asyn c в javascript здесь .

0 голосов
/ 14 марта 2020

Я думаю, что вы непосредственно используете userData.fullName в своем текстовом компоненте. Когда компонент рендерится впервые до setUserData, userData пуст.

Итак, вы можете попробовать это так,

{userData.fullName && <Text>{userData.fullName}</Text>}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...