使用流星反应导致 find not a function
Using react with meteor results in find not a function
我正在尝试学习使用 meteor 和 运行 的反应方式来解决一个非常关键但非常基本的问题。我正在尝试订阅一些数据,然后将其呈现为反应组件,并使用 react-template-helper
来显示该组件。
当我尝试渲染该组件时,我在控制台中收到以下错误。
Exception from Tracker afterFlush function: undefined
findOne is not a function
或
find is not a function
我的应用模板:
<template name="appLayout">
<nav class="fixed">
<ul class="centered">
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ul>
<ul class="social">
<li><a href=""><i class="icon"></i></a></li>
<li><a href=""><i class="icon"></i></a></li>
</ul>
</nav>
{{> Template.dynamic template=yield}}
</template>
<template name="home">
<section class="home-hero">
{{> React component=homeContent}}
</section>
</template>
我的react/meteor视图逻辑:
Template.home.onCreated( function() {
let template = this;
template.autorun( function() {
Meteor.subscribe('homecontent');
})
});
homeContent = React.createClass({
mixins: [ReactMeteorData],
getMeteorData() {
return {
homeData: homeContent.find({}).fetch()
}
},
render(){
return (
<div className="units-container">
<div className="units-row centered-content stacked">
<h1>site name</h1>
<p>{this.data.homeData.homeCopy}</p>
</div>
</div>
)
}
})
Template.home.helpers({
homeContent() {
return homeContent
}
})
我的路由器:
FlowRouter.route('/', {
action() {
BlazeLayout.render('appLayout', {
yield: 'home'
})
},
name: 'home'
})
我的服务器发布:
Meteor.publish('homecontent', function(){
return homeContent.find();
})
我正在使用以下包尝试通过 blaze 实现 React 组件:ecmascript、react、kadira:flow-router、kadira:blaze-layout、react-template-helper。
值得注意的是,如果我简单地从我的 jsx 文件中删除 mixins
和 getMeteorData
,一切都会呈现良好并且 mini-mongo 从控制台正常运行。
非常简单的错误。在 homeData: homeContent.find({}).fetch()
行,调用 homeContent
指的是我刚刚做出的反应 class,而不是我正在寻找的集合。
此特定错误的修复方法是 homeContent = React.createClass({
变为 homeComponent = React.createClass({
我正在尝试学习使用 meteor 和 运行 的反应方式来解决一个非常关键但非常基本的问题。我正在尝试订阅一些数据,然后将其呈现为反应组件,并使用 react-template-helper
来显示该组件。
当我尝试渲染该组件时,我在控制台中收到以下错误。
Exception from Tracker afterFlush function: undefined
findOne is not a function
或
find is not a function
我的应用模板:
<template name="appLayout">
<nav class="fixed">
<ul class="centered">
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ul>
<ul class="social">
<li><a href=""><i class="icon"></i></a></li>
<li><a href=""><i class="icon"></i></a></li>
</ul>
</nav>
{{> Template.dynamic template=yield}}
</template>
<template name="home">
<section class="home-hero">
{{> React component=homeContent}}
</section>
</template>
我的react/meteor视图逻辑:
Template.home.onCreated( function() {
let template = this;
template.autorun( function() {
Meteor.subscribe('homecontent');
})
});
homeContent = React.createClass({
mixins: [ReactMeteorData],
getMeteorData() {
return {
homeData: homeContent.find({}).fetch()
}
},
render(){
return (
<div className="units-container">
<div className="units-row centered-content stacked">
<h1>site name</h1>
<p>{this.data.homeData.homeCopy}</p>
</div>
</div>
)
}
})
Template.home.helpers({
homeContent() {
return homeContent
}
})
我的路由器:
FlowRouter.route('/', {
action() {
BlazeLayout.render('appLayout', {
yield: 'home'
})
},
name: 'home'
})
我的服务器发布:
Meteor.publish('homecontent', function(){
return homeContent.find();
})
我正在使用以下包尝试通过 blaze 实现 React 组件:ecmascript、react、kadira:flow-router、kadira:blaze-layout、react-template-helper。
值得注意的是,如果我简单地从我的 jsx 文件中删除 mixins
和 getMeteorData
,一切都会呈现良好并且 mini-mongo 从控制台正常运行。
非常简单的错误。在 homeData: homeContent.find({}).fetch()
行,调用 homeContent
指的是我刚刚做出的反应 class,而不是我正在寻找的集合。
此特定错误的修复方法是 homeContent = React.createClass({
变为 homeComponent = React.createClass({