使用Meteor + React和”this.props.thing.source“是mongodb _id的字符串。meteor + react“Uncaught TypeError:无法读取未定义的属性'数据'
“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”:
的错误我得到:
“遗漏的类型错误:未定义无法读取属性‘数据’”
可能是因为'this.props。 thing.source'不等于该散列码,这意味着'findOne'返回'undefined',所以访问'data'属性会引发错误。 – royhowie
只是想出来了,它涉及到不等于字符串...我发现并不是所有的东西都有.source的值,所以在一些它是未定义的...现在即时检查是否有字符串价值第一,然后才执行查找。 – markjspivey
这正是我的意思。当你使用硬编码的字符串时,'findOne'返回一个带有'data'属性的对象。但是,当你使用这个变量时,'findOne'返回'undefined',因此出错。 – royhowie