state = {AnswerQuery : '', answerdetail: []};

    getData() {
        const data = this.props.navigation.getParam('data');
        this.setState({
            data
        });
    }

    renderdata(){
        console.log(this.state.data) // not able to recieve data here
        const {answerdetail} = this.state
        firebase.firestore().collection("queries").doc(this.state.data).collection("answers").onSnapshot((answerSnapShot) => {
            console.log(this.state.data) // recieving data here
            answerSnapShot.forEach((doc) => {
                answerdetail.push(doc.data())
                console.log(doc.data())
                
                
            })
            console.log(this.state.data) // recieving data here
            this.setState(answerdetail)
           // console.log(answerdetail)
            //console.log(anotherentity)
            
        })
    }

    componentDidMount(){
        this.getData()
        this.renderdata()

        }

Recepción de valor de otra pantalla usando la función GetData (), pero no puede usar ese valor dentro de la función RenderData () mientras pasa los datos al comando Firebase Firestore, pero puedo acceder a ese Datos dentro del comando Firebase Firestore.

Esto.state.data no tiene valor al pasarlo en "DOC" Firebase Firestore Function Doc (esto.STATE.DATA)

Por favor, ayuda

0
Abhi Kulshrestha 29 may. 2021 a las 16:22

1 respuesta

La mejor respuesta

La función renderdata se llama antes de actualizar el estado.

Puede actualizar su getData para llamar al renderdata después de actualizar el estado.

getData() {
    const data = this.props.navigation.getParam('data');
    this.setState({
        data
    }, this.renderdata);
}
1
Aniket Kolekar 29 may. 2021 a las 13:36