Неопределенное возвращаемое значение с использованием useState и firebase для объектов в React Native - PullRequest
0 голосов
/ 26 мая 2020

Я пишу приложение с использованием React Native и столкнулся с проблемой при попытке обновить объект с помощью метода useState. Вот мой код:

const Screen = ({route}) => {

    var roomKey = route.params;

    const [room, setRoom] = useState({});
    db.ref('rooms').on('value', (data) => {
        setRoom(() => (data.val())[roomKey]);
    });

    console.log(room);

// rest of the code ...

Мой код работает следующим образом: сначала он принимает ключ, выводимый другим экраном с реактивной навигацией, а затем вызывает базу данных firebase с помощью метода ref (db определяется как Firebase.initializeApp(config).database() , где config - объект со всеми необходимыми данными firebase). Если я выхожу из системы data.val())[roomKey], он правильно выводит объект, который я загружаю из базы данных, однако объект room не обновляется методом useState (он выводит undefined, что делает следующую часть кода cra sh). Что я делаю не так?

1 Ответ

0 голосов
/ 30 мая 2020

В вашем коде setRoom - это функция для изменения значения состояния room. Итак, вам нужно передать значение в setRoom.

Пожалуйста, проверьте следующий код.

const Screen = ({route}) => {

    var roomKey = route.params;

    const [room, setRoom] = useState({});
    db.ref('rooms').on('value', (data) => {
        setRoom(data.val()[roomKey]);
    });

    console.log(room);

// rest of the code ...
...