Firebase:渲染在React组件中使用.push创建的帖子列表

时间:2016-10-24 10:19:33

标签: reactjs firebase firebase-realtime-database

我使用.push在Firebase中使用唯一ID创建对象。我试图通过更新组件状态在React组件中显示该对象。 当没有唯一键时,我的组件正确显示数据(当我在firebase中手动创建条目作为直接子项时,但在通过.push创建时不能。 这是我的反应组件渲染语句:     class Snapshots扩展了React.Component {     constructor(){     超();     this.state = {       经销商:' &#39 ;,       来电:'',       聊天:'',       形式:'',     };   }   componentDidMount(){     const firebaseRef = firebase.database()。ref()。child(' snapshot');     const callsRef = firebaseRef.child(' calls');     const chatsRef = firebaseRef.child(' chats');     const formsRef = firebaseRef.child(' forms');     callsRef.on(' value',snap => {       this.setState({         调用:snap.val()       });     });     chatsRef.on(' value',snap => {       this.setState({         聊天:snap.val()       });     });     formsRef.on(' value',snap => {       this.setState({         形式:snap.val()       });     });   }     render(){         return(< div className =" container">           < div className =" row">             < table className =" table">               < THEAD>                 < TR>                   < th>电话< / th>                   < th> Live Chats< / th>                   < th> Web表单< / th>                 < / TR>               < / THEAD>               < TBODY>                 < TR>                   < td scope =" row" className ="电话号码背景">< span className ="快照"> {this.state.calls}< / span>< / td>                   < td className =" live-chats data-background">< span className =" snapshot"> {this.state.chats}< / span>< / TD>                   < td className ="网络表单数据背景">< span className ="快照"> {this.state.forms}< / span>< / TD>                 < / TR>               < / tbody的>             < /表>           < / DIV>         < / DIV>     );     } } 这是一个截图: http://screencast.com/t/spUuU5dDx 在我的输入字段中引用状态时,我错过了对唯一键的一些引用,但我不知道如何实际获得它。

1 个答案:

答案 0 :(得分:1)

使用.push(),您会获得一个唯一的密钥,例如:

var newPostKey = firebase.database().ref('posts').push().key;

然后你不能设置这样的数据:

firebase.database().ref('posts/' + newPostKey).set({ someData: data });

或者像这样:

firebase.database().ref('posts/' + newPostKey).on('value', (data) => {
    // data.val()...
});