【发布时间】:2016-02-19 02:09:07
【问题描述】:
我是使用 react.js 的新手,并且正在尝试编写一个可重用的组件,该组件具有传递给它的可选属性。在组件中,该可选属性使用流星从数据库中提取数据,然后我想检查返回的对象上是否存在属性(parent_task 存在于任务中),如果存在,则添加一个链接。这似乎相当简单,但我不断收到错误。有人对我可能遗漏的内容有任何建议吗?有没有我遗漏的 jsx 陷阱?
<Header task={params.task_id} /> // rendering component with property
// Task List Header
Header = React.createClass({
mixins: [ReactMeteorData],
getMeteorData() {
var handle = Meteor.subscribe('tasks');
return {
taskLoading: ! handle.ready(),
task: Tasks.findOne({_id: this.props.task})
}
},
getParentTaskLink() {
if (!this.data.taskLoading) {
var current_task = this.data.task;
if (parent_task in current_task) { // or current_task.hasOwnProperty(parent_task)
console.log("parent_task exists!");
}
}
},
render() {
return (
<div className="bar bar-header bar-calm">
{this.getParentTaskLink()} // eventually return anchor element here
<h1 className="title">Hello World</h1>
</div>
)
}
});
【问题讨论】:
-
您的问题在哪里?在 getParentTaskLink 中?
-
不是真的,为什么
data.task在data.taskLoading错误检查中为空?如果是,你为什么不直接做if (!this.data.taskLoading && this.data.task) {然后你知道你可以在里面使用它? -
Props 是一个 JS 对象,所以你可以使用 JS 函数来检查对象是否包含...检查dmitripavlutin.com/check-if-object-has-property-javascript
标签: javascript reactjs meteor-react