componentDidMount中的状态始终为null,应该有来自任务变量的数据

时间:2017-12-05 07:55:08

标签: javascript reactjs firebase react-native native-base

我有一个问题,每当我在componentDidMount中调用状态“modalData”时,状态总是为null,应该有来自任务变量的数据。

constructor(props){
    super(props);
    this.tasksRef = firebase.database().ref('/users/'+ this.props.card_id);
    this.state = {
        modalData : null,
    }
}

componentDidMount(tasksRef){
    var task = [];
    tasksRef.on('value', (dataSnapshot) => {
        task.push({
            about : dataSnapshot.val().about, 
            card : dataSnapshot.val().card,
            company : dataSnapshot.val().company,
            first_name : dataSnapshot.val().first_name,
            job_title : dataSnapshot.val().job_title,
            last_name : dataSnapshot.val().last_name,
            photo : dataSnapshot.val().photo,
            role : dataSnapshot.val().role,
            thumbnail : dataSnapshot.val().thumbnail,
            title : dataSnapshot.val().title,
            website : dataSnapshot.val().website,
            _key : dataSnapshot.key
        });
        console.log('dataSnapshot.val().first_name : ' + dataSnapshot.val().first_name);
    });
    console.log(task); //there is data
    this.setState({
        modalData : task,
    });
    console.log(this.state.modalData); //there is no data
}

2 个答案:

答案 0 :(得分:3)

setState是异步的,所以你需要添加一个回调来显示console.log,即:

this.setState({ modalData: task }, () => console.log(this.state));

setState Docs

答案 1 :(得分:-1)

设置后记录将无效。你可以使用

 this.state.modalData = task 

,然后记录它。那会有用。为你的日志记录。