我刚开始使用react.js,尝试编写一个可重复使用的组件,并向其传递一个可选属性。在组件中,该可选属性使用meteor从数据库中提取数据,然后我想检查返回对象上是否存在一个属性(parent_task存在于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>
)
}
});
data.taskLoading
为false的检查中data.task
会为空呢?如果是这样,为什么不直接写成if (!this.data.taskLoading && this.data.task) {
,这样你就知道可以在里面使用它了。 - Dominic