【发布时间】:2018-07-13 08:01:14
【问题描述】:
我正在尝试从 Firebase 服务器访问数据,然后继续打开对象的查看页面。我认为我的路由肯定是有效的。
我希望点击的帖子链接的索引组件是这样的:
renderPosts() {
return _.map(this.state.posts, (post, key) => {
return (
<div key={key} className="thumbnail">
<h2>
<Link to="/view/posts/{post}">
{post.title}
</Link>
</h2>
<p>{post.body}</p>
</div>
);
});
}
我试图链接到帖子,因为我认为它基于用于构建该功能的 componentDidMount 工作。我也将视图组件导入其中。
app.js 页面是这样的:
<BrowserRouter>
<div>
<div>
<Nav/>
</div>
<Switch>
<Route path='/' exact component={List}/>
<Route path='/new' component={NewPost}/>
<Route path='/view' component={View}/>
</Switch>
</div>
</BrowserRouter>
</div>
);
}
}
而view.js页面如下:
componentWillMount(){
let postRef = database().ref('posts').orderByKey().limitToLast(100);
postRef.on('value', snapshot => {
let post = { title: snapshot.title, id: snapshot.key };
this.setState({ posts: [post].concat(this.state.posts) });
});
console.log(postRef);
}
}
render() {
return (
<div >
</div>
);
}
}
对不起。现在有点裸露,因为我删除了我尝试过的所有内容。我用了几篇文章和视频试图弄清楚,但没有任何效果。然而,我用于索引页面的原始生命周期方法和构造函数是这样的:
constructor(props){
super(props);
this.state = {
title: '',
body: '',
posts:{}
};
this.onInputChange = this.onInputChange.bind(this);
this.onHandleSubmit = this.onHandleSubmit.bind(this);
}
和
componentDidMount(){
database.on('value', snapshot => {
this.setState({
posts: snapshot.val()
});
});
}
对不起,我知道要完成很多工作,但我认为我应该涵盖所有可能有用的内容。但总结一下:我的问题是如何从数据库中检索帖子,然后将 Firebase 自动生成的密钥添加到链接中,从而将其呈现在新页面中。
附言。我的数据库是这样导出的
export const database = firebase.database().ref('/posts’);
【问题讨论】:
-
@LukeSchlangen 有什么想法吗?抱歉又把你赶出去了
标签: javascript reactjs firebase firebase-realtime-database react-router