在流星反应渲染执行之前,如何允许订阅数据首先初始化?

时间:2016-02-15 11:10:22

标签: javascript meteor reactjs

我正在使用meteor-react,kadira:flowrouter和kadira:react-layout with remove autopublish and insecure in I getd

  

未捕获的TypeError:无法读取属性' map'未定义的

在订阅完成从mongoDB接收数据之前,首先执行React的渲染功能。在渲染执行之前如何让数据先加载?

,

1 个答案:

答案 0 :(得分:0)

我只是通过向我的FlowRouter添加订阅功能来解决这个问题。

router.jsx

FlowRouter.route("/store", {
    name: "Store",
    subscriptions: function() {
        this.register('getAllCourses', Meteor.subscribe('getAllCourses'));
    },
    action (params) {
        renderMainLayoutWith(<Store/>)
    }
})

Store.jsx

Store = React.createClass({

    mixins: [ReactMeteorData],

    getMeteorData() {

        return {
            courses: Courses.find().fetch()
        }
    },

    render() {

        let displayCourses = this.data.courses.map((data) => {
            return (
                <StoreItemButton key={data._id} title={data.title} description={data.description}/>
            )
        })

        return (
            <div className="container-fluid">
                <div className="card-columns">
                    {displayCourses}
                </div>
            </div>
        )
    }
})