我有一个订阅商品的组件。 确认项目在那里,就像我使用以下内容一样,它返回带有项目内部的光标:
console.log(Items.find({key: itemKey}).fetch());
物品集合已导入等。
我的构造函数:
constructor(){
super();
this.state = {
subscription: {
items: Meteor.subscribe("allItems")
}
}
}
我的组件将卸载方法:
componentWillUnmount(){
this.state.subscription.items.stop();
}
这是问题所在的方法。错误是Uncaught TypeError:无法读取属性' srcEntire'未定义:
getItemSource(itemKey){
console.log(itemKey); // shows the correct key
var itemer = Items.findOne({key: itemKey});
console.log(itemer.srcEntire);
return itemer.srcEntire;
}
渲染部分(如果我对getItemSource方法的返回值进行硬编码,则显示图像。通过调用getItemSource方法并传入传入的图层道具(道具工作)找到图像的来源:< / p>
render(){
return (
<div className="col-lg-3" >
<img id="myLayer" className="on-top img-responsive center-block on-top " name="myLayer" src={this.getItemSource(this.props.layers.myLayer)} />
</div>
)}
答案 0 :(得分:0)
当您执行findOne()
itemer
时,您的订阅尚未准备就绪,直到它(可能是毫秒)为止。您可以等待订阅准备就绪,也可以使用以下方式为自己辩护:
getItemSource(itemKey){
var itemer = Items.findOne({key: itemKey});
return itemer && itemer.srcEntire;
}