Firebase 和 React with react-snapshot(预渲染)
Firebase and React with react-snapshot (pre-rendering)
我是 firebase 的新手,只是在将所有数据放到 firebase 之前写了一个简单的测试反应组件,但不幸的是我无法让它与服务器端预渲染一起工作。制作非常重要它对我来说 SEO 友好,我在互联网上搜索解决方案,但仍然无法真正弄明白。请帮我解决这个问题。非常感谢。
下面的简单代码只会用 React-Snapshot 生成初始状态,当我打开页面时它会显示初始状态,然后更新到更新的状态。但是我需要让初始状态对象直接从 Firebase 获取数据并使用 React-Snapshot 生成静态 html。
class FirebaseTestingComponent extends Component {
constructor(){
super();
this.state = {
speed: 10
};
}
componentWillMount(){
const rootRef = firebase.database().ref().child('react');
const speedRef = rootRef.child('speed');
speedRef.on('value', snap => {
this.setState({
speed: snap.val()
});
});
}
render(){
return (
<div>
<h1>{this.state.speed}</h1>
</div>
);
}
}
出于对 SEO 友好的考虑,我假设您想要静态内容而不是动态内容(不是 SEO 专家),但是 firebase 异步运行,尤其是当您使用 .on() 时,这就像 websocket,无论您使用 willmount 还是 didmount 都没有关系这种情况。
我对设计的谦虚建议是在呈现页面之前从服务器中的 firebase 获取(firebase 支持 java 和节点肯定,不确定其余部分),并使用您获取的值设置初始状态,这将保证您的初始状态来自 firebase。从那以后你仍然可以使用那个 .on() 来获得以后的价值。
我是 firebase 的新手,只是在将所有数据放到 firebase 之前写了一个简单的测试反应组件,但不幸的是我无法让它与服务器端预渲染一起工作。制作非常重要它对我来说 SEO 友好,我在互联网上搜索解决方案,但仍然无法真正弄明白。请帮我解决这个问题。非常感谢。
下面的简单代码只会用 React-Snapshot 生成初始状态,当我打开页面时它会显示初始状态,然后更新到更新的状态。但是我需要让初始状态对象直接从 Firebase 获取数据并使用 React-Snapshot 生成静态 html。
class FirebaseTestingComponent extends Component {
constructor(){
super();
this.state = {
speed: 10
};
}
componentWillMount(){
const rootRef = firebase.database().ref().child('react');
const speedRef = rootRef.child('speed');
speedRef.on('value', snap => {
this.setState({
speed: snap.val()
});
});
}
render(){
return (
<div>
<h1>{this.state.speed}</h1>
</div>
);
}
}
出于对 SEO 友好的考虑,我假设您想要静态内容而不是动态内容(不是 SEO 专家),但是 firebase 异步运行,尤其是当您使用 .on() 时,这就像 websocket,无论您使用 willmount 还是 didmount 都没有关系这种情况。
我对设计的谦虚建议是在呈现页面之前从服务器中的 firebase 获取(firebase 支持 java 和节点肯定,不确定其余部分),并使用您获取的值设置初始状态,这将保证您的初始状态来自 firebase。从那以后你仍然可以使用那个 .on() 来获得以后的价值。