Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在meteor react渲染执行之前,如何允许先将数据订阅到init?_Javascript_Meteor_Reactjs - Fatal编程技术网

Javascript 在meteor react渲染执行之前,如何允许先将数据订阅到init?

Javascript 在meteor react渲染执行之前,如何允许先将数据订阅到init?,javascript,meteor,reactjs,Javascript,Meteor,Reactjs,我使用meteor react、kadira:flowrouter和kadira:react布局,删除自动发布和不安全,我得到 未捕获的TypeError:无法读取未定义的属性“map” 在订阅从mongoDB接收数据之前,首先执行React的呈现函数。在执行渲染之前,如何让数据先加载 Store = React.createClass({ mixins: [ReactMeteorData], getMeteorData() { var coursesFet

我使用meteor react、kadira:flowrouter和kadira:react布局,删除自动发布和不安全,我得到

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

在订阅从mongoDB接收数据之前,首先执行React的呈现函数。在执行渲染之前,如何让数据先加载

Store = React.createClass({

    mixins: [ReactMeteorData],

    getMeteorData() {

        var coursesFetch
        Meteor.subscribe("getAllCourses", () => {
            coursesFetch = Courses.find().fetch()
            console.log(coursesFetch);
        })

        return {
            courses: coursesFetch
        }
    },

    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>
        )
    }
})
Store=React.createClass({
mixins:[数据],
getMeteorData(){
var coursesFetch
Meteor.订阅(“getAllCourses”,()=>{
coursesFetch=Courses.find().fetch()
console.log(coursesFetch);
})
返回{
课程:coursesFetch
}
},
render(){
让displayCourses=this.data.courses.map((数据)=>{
返回(
)
})
返回(
{displayCourses}
)
}
})

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

router.jsx

FlowRouter.route("/store", {
    name: "Store",
    subscriptions: function() {
        this.register('getAllCourses', Meteor.subscribe('getAllCourses'));
    },
    action (params) {
        renderMainLayoutWith(<Store/>)
    }
})
FlowRouter.route(“/store”{
名称:“商店”,
订阅:函数(){
注册('getAllCourses',Meteor.subscribe('getAllCourses');
},
行动(参数){
RenderMailyoutWith()
}
})
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>
        )
    }
})
Store=React.createClass({
mixins:[数据],
getMeteorData(){
返回{
课程:课程。查找()。获取()
}
},
render(){
让displayCourses=this.data.courses.map((数据)=>{
返回(
)
})
返回(
{displayCourses}
)
}
})