Как поймать снимок (ответ) и отрендерить его? - PullRequest
0 голосов
/ 15 марта 2019

Я использую приложение create-реагировать.И если вы наблюдаете следующую функцию, которую я сделал для запроса данных из firebase:

request = (id) => {        
    firebaseDB.ref(`Majors/${id}`).once('value')
    .then((snapshot)=>{           
        this.setState({
            data: snapshot.val()
        })
    })
 }

, как показано выше, я обновил состояние значением в snapshot.val.

теперь в том же компоненте, я использую this.state.data вот так

 showCourses(){        
    this.state.data.Courses.map((item,i)=>(
        <div key={i}>
           asd
        </div>           
    ))        
 }

и выдает ошибку, говорящую «this.state.data.Courses не определены», потому что ответ (снимок)) еще не вернулись с данными еще и состояние не было обновлено.

я попытался добавить условное выражение так:

showCourses(){
    if (this.state.data.Courses){
        return(this.state.data.Courses.map((item,i)=>(
        <div key={i}>
           asd
        </div>)))
    }
}

ошибка исчезлано он не рендерится!

Я предполагаю, что вопрос заключается в следующем: какой механизм используется для захвата, обновления состояния и перерисовки компонента?

1 Ответ

0 голосов
/ 15 марта 2019

Ошибка из-за того, что this используется в функции request, this неправильно связан с элементом. попробуйте использовать синтаксис function () {}, а затем добавьте его сразу после выполнения функции:

request = request.bind(/* your element */);

Надеюсь, это помогло:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...