首页 > 解决方案 > 屏幕需要重新渲染以在 React-Native 中显示实时数据

问题描述

我正在使用 componentDidMount 在 React-Native 应用程序中显示 Firebase 实时数据,但是,当我第一次渲染时,没有显示数据。我需要返回并再次导航到页面以更新数据并显示在屏幕上。如何解决此问题并在第一次尝试时显示数据?谢谢你。

export default class ForthPage extends Component {
    constructor() {
        super();
        this.state = {
            reservas: []
        }
    }

    componentDidMount() {
        const readUsersData = () => {
            const nameRef = firebase.database().ref('user0001')
            nameRef.on('value', (snapshot) => {
                const state = snapshot.val();
                this.state.reservas = state; //misstake(see my answer)
            });
        }
        readUsersData()
        const pushAdminData = (data) => {
            this.setState({ data })
        }
        pushAdminData(this.state.reservas);
    }

    render() {
        const reservas = JSON.stringify(this.state.reservas);

        return (
            <Background>
                <View>
                    <ScrollView>
                        <Text> Mis reservas: {reservas}</Text>
                    </ScrollView>
                </View>
            </Background>
        )
    }
}

标签: react-nativefirebase-realtime-databaserendermount

解决方案


函数的调用readUsersData()似乎不清楚。尝试在与 render,componentDidMount 相同的级别定义函数。

像下面

constructor() {
    super()
    this.state = {
        reservas: []
    }
}
componentDidMount() {
  const readUsersData = ()=> {
    const nameRef =  firebase.database().ref('user0001')
    nameRef.on('value', (snapshot)=> {
      const state = snapshot.val()
      this.setState({reservas:state}) })
}
readUsersData();
}

这将完成这项工作。


推荐阅读