【发布时间】:2015-11-08 01:17:27
【问题描述】:
我使用 Meteor + React 并且“this.props.thing.source”是一个 mongodb _id 的字符串。
“findOne()”函数是 Meteor 的函数之一。正如您所看到的,当我传入 ID 本身的字符串时它工作正常,但是在传入变量时我得到一个未定义的错误,即使该变量呈现出相同的字符串。
在此代码中:
Thing = React.createClass({
propTypes: {
thing: React.PropTypes.object.isRequired
},
render() {
return (
<ul>
<li>Display: {Things.findOne(this.props.thing.source).data}</li>
<li>Display: {Things.findOne("emq6M4WbJeRvkA6Q3").data}</li>
<li>Source: {this.props.thing.source}</li>
</ul>
);
}
});
这不起作用:
这行得通:
这会正确呈现“emq6M4WbJeRvkA6Q3”:
我得到的错误:
"Uncaught TypeError: Cannot read property 'data' of undefined"
【问题讨论】:
-
可能是因为
this.props.thing.source不等于那个哈希码,也就是说findOne返回undefined,所以访问data属性会抛出错误。 -
刚刚想通了,它与不等于字符串有关...我发现并非所有的事物都有.source的值,所以有些是未定义的...现在我首先检查是否有字符串值,然后才执行查找。
-
这正是我的意思。当您使用硬编码字符串时,
findOne返回一个具有data属性的对象。但是,当您使用变量时,findOne正在返回undefined,因此出现错误。
标签: javascript meteor reactjs