使用Tracker进行流星/ React SSR和数据

时间:2018-08-07 05:15:23

标签: reactjs meteor serverside-rendering ssr

我正在尝试使用流星开发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,我没有得到如何管理这种差异的想法,怎么解决呢?

0 个答案:

没有答案