我正在尝试使用流星开发SSR应用程序并做出反应。一切顺利,直到出现以下错误消息:
Warning: Did not expect server HTML to contain a <div> in <div>.
这显然是由于服务器上创建的树和客户端上创建的树之间的差异。
我要获取以下内容,然后显示数据:
class Index extends Component {
renderCategories() {
return this.props.categories.map((category) => {
return <div key={category._id}>{category.name}</div>
})
}
render() {
if(!this.props.ready){
return null
}
return (
<div className="index">
<div className="index__right">
{this.props.categories ? this.renderCategories() : <div></div>}
</div>
</div>
)
}
}
const mapStateToProps = state => ({ selectedIndex : state.selectedIndex });
const TrackerIndex = withTracker(() => {
let ready = true
if(Meteor.isClient){
let categoriesSub = Meteor.subscribe('categories');
ready = categoriesSub.ready();
}
return {
categories: Categories.find({}).fetch(),
ready
}
})(Index)
export default connect(mapStateToProps)(TrackerIndex);
屏幕上显示的实际上是我所期望的(类别列表),并且正确地来自服务器,如源代码所示。我认为问题在于在服务器端我有我的收藏集,然后在客户端我什么都没有,然后又没有订阅和数据,但是由于SSR,我没有得到如何管理这种差异的想法,怎么解决呢?