2016-07-08 8 views
0

私はアイテムを購読しているコンポーネントを持っています。 項目は、私が使用しているかのように、それは、その中の項目にカーソルを返し、次があることが確認されています。私のコンストラクタなどメテオfindOneが値を返さない

console.log(Items.find({key: itemKey}).fetch()); 

アイテムコレクションがインポートされ

を:

constructor(){ 
      super(); 
      this.state = { 
        subscription: { 
          items: Meteor.subscribe("allItems") 
        } 
      } 
    } 

componentWillUnmount(){ 
      this.state.subscription.items.stop(); 
    } 

のTh:

私のコンポーネントは、メソッドをアンマウントします問題が存在する方法です。エラーがキャッチされない例外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方法と(小道具が動作)に渡された層の小道具を渡す:あなたはそれがあるまでfindOne()itemerは(おそらくミリ秒)で定義されませんやっているとき

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

あなたのサブスクリプションは、まだ準備ができていません。サブスクリプションの準備が整うのを待つか、自分で防御するか、次のようにしてください:

getItemSource(itemKey){ 
    var itemer = Items.findOne({key: itemKey}); 
    return itemer && itemer.srcEntire; 
} 
関連する問題