2016-03-23 27 views
2

Ben React-Meteor ile bir uygulama yapıyorum ve davranışının rastgele olması ile ilgili sorunlar yaşıyorum.React-Meteor "undefined özelliği X okuyamıyorum" başka bir sayfadan

mülkiyet tanımsız

X adet fakat X okuyamıyor (ve bunun oluşturma) genellikle, farklı bir sayfadan geçerli: app parçalarını kullanarak, ben diyor bir hata alıyorum Daha önce bulunduğum sayfa, bazen diğer birçok sayfadan. Ancak, yenileyip denediğimde hata yapmaz.

tek gösterileri aşağıdaki gibidir hatası: Bazı durumlarda

Exception from Tracker recompute function: 
debug.js:41 TypeError: Cannot read property 'jobId' of undefined 
    at React.createClass.getMeteorData (user.jsx:209) 
    at meteor-data-mixin.jsx:89 
    at Tracker.Computation._compute (tracker.js:323) 
    at new Tracker.Computation (tracker.js:211) 
    at Object.Tracker.autorun (tracker.js:562) 
    at meteor-data-mixin.jsx:76 
    at Object.Tracker.nonreactive (tracker.js:589) 
    at MeteorDataManager.calculateData (meteor-data-mixin.jsx:75) 
    at ReactMeteorData.componentWillUpdate (meteor-data-mixin.jsx:22) 
    at ReactCompositeComponentMixin._performComponentUpdate (ReactCompositeComponent.js:535) 

, bunların birden fazla farklı Xs ile diğer sayfalara bir çift gelen gösterecektir. Sen bile bu sayfadaki jobId ihtiyacı şey çağırarak değilim görebilirsiniz

Template.addNotification.onRendered(function() { 
    ReactDOM.render(<AddNotification />, 
        document.getElementById("addNotification")); 
}); 

AddNotification = React.createClass({ 
    addNotification: function(evt) { 
     evt.preventDefault(); 
     notificationInfo = { 
      message: ReactDOM.findDOMNode(this.refs.msg).value, 
      notifType: ReactDOM.findDOMNode(this.refs.notifType).value, 
      user: ReactDOM.findDOMNode(this.refs.user).value 
     }; 
     Meteor.call("addNotification", notificationInfo); 
    }, 
    addBunch: function(evt) { 
     evt.preventDefault(); 
     Meteor.call("addBunch", Meteor.userId()); 
    }, 
    render() { 
     return (
      <div> 
       <div>Message:<input type="text" ref="msg"/></div> 
       <div>Type:<input type="text" ref="notifType"/></div> 
       <div>User:<input type="text" ref="user"/></div> 

       <button onClick={this.addNotification}>Add</button> 

       <button onClick={this.addBunch}> 
        Or, add a bunch to current</button> 
      </div> 
     ); 
    } 
}); 

:

Bu

ben değilim sayfanın kodudur.

+0

Özellikle meteor uygulamalarında js'de çok yaygın bir hata. Bu yazıya bir göz atın (http://dweldon.silvrback.com/guards). –

+0

Merhaba, cevabınız için teşekkürler. Okuduktan ve "Demir-yönlendiricinin problemi çözme yolunda uzun bir yol kat etmesine rağmen, verinin basitçe orada olmadığı durumu düzeltmediği" diye düşündüğünüzde ve merak ettiyseniz, verilerin nerede olmadığı anlamına mı geliyor? YET, ya da sadece, beklenen bir veri yok mu? – ys27

+0

Db'de herhangi bir veri bulunmayan durum anlamına gelir. –

cevap

2

Bu, guard'a gereksinim duyduğunuz bir durum gibi görünür. Hatanın kaynağı göz at ve benzeri bir şey ile korurlar: obj potansiyel tanımsız nesnedir

obj && obj.jobId 

.

İlgili konular