流星+反应”;未捕获的类型错误:无法读取属性'数据'“未定义”;
meteor + react "Uncaught TypeError: Cannot read property 'data' of undefined"
Im使用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":
我得到的错误:
"未捕获类型错误:无法读取未定义"的属性"data"
由于Things.findOne()
返回的是undefined
,所以您会得到错误。
您说用this.props.thing.source
调用上面的函数不起作用,这是错误的,但由于您没有提到Thing
组件的渲染是如何发生的,因此查找错误的最佳方法是传递道具this.props.thing.source
/传递给组件的内容。
我做了一个快速复制粘贴的例子,说明了你的组件在JSFiddle 中的工作
var Things = {
findOne: function (thingSource) {
if (thingSource) {
return {
data: 'It did work!'
};
}
return undefined;
}
}
var Thing = React.createClass({
propTypes: {
thing: React.PropTypes.object.isRequired
},
render: function() {
return <div>Hello {Things.findOne(this.props.thing.source).data}</div>;
}
});
React.render(<Hello thing={{source: true}} />, document.body);
您的确切组件的工作示例可以在这里找到
相关文章:
- TypeError:无法读取属性'推'未定义的JavaScript
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 未捕获的类型错误:无法读取属性'删除'的未定义
- AngularJS指令出错-无法读取属性'编译'的未定义
- 看到“;未捕获的类型错误:无法读取属性'weight'未定义的“;尽管按照字面上的指示
- angularjs无法读取未定义的属性then
- 无法读取属性'材料'未定义的Three.js
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- JavaScript承诺-无法读取属性'那么'的未定义
- 未捕获的类型错误:无法读取属性'中止'的未定义
- 角度推入数组给出:TypeError:无法读取属性'推'的未定义
- Javascript未捕获类型错误:无法读取属性'0'的未定义
- jQuery控制台错误:无法读取属性'top'的未定义
- TypeError:无法读取属性'findAll'的未定义
- 无法读取属性'errcap'未定义的jqgrid
- 无法读取未定义的属性“rid”
- 未捕获的类型错误: 无法读取未定义的属性“图像”
- 可以't读取'getHTML'未定义的Liferay CK Editor内容
- 在node.js中未定义读取属性错误