の再レンダリングをトリガではありませんそこに)それを表示します。利用可能なデータがない場合、単純な読み込みメッセージが表示されます。しかし、このスニペットがオンになっているページを最初に読み込むと、読み込み部分にはまってしまいます。ページをリロードすると、データが表示されます(通常)。流星handle.ready()(レンダリングでは)私は私のrenderメソッドで次のコードを持っているコンポーネント
ページが最初にロードされ、ディスプレイが「ローディングヘラで」止まっている間にspatulaReady.ready()をチェックし、そこにあるべきデータがあれば、ハンドルはレディとして準備完了となり、データはそこにありますそうなっている。ページをリフレッシュすると、すべて表示されます。問題は、データとレンダリングがこのようになっているかどうかをチェックするこの方法が、過去に私にとってうまくいきました。それはレンダリングメソッドが反応しないためですか? handle.ready()はリアクティブである必要があるためです。それも奇妙になり何
はそれが時々正しく一見ランダムに、ページのロード時にデータを表示しないことです。
CreateContainerコード:
export default createContainer(props => {
return {
user: Meteor.user(),
spatulaReady: Meteor.subscribe('spatula.byId', props.deviceId),
spatula: SpatulaCollection.findOne()
}
}, SpatulaConfig)
公報コード:
Meteor.publish('spatula.byId', function(deviceId) {
const ERROR_MESSAGE = 'Error while obtaining spatula by id'
if (!this.userId) //Check for login
throw new Meteor.Error('Subscription denied!')
const spatula = SpatulaCollection.findOne({_id: deviceId})
if(!spatula) //No spatula by this id
throw new Meteor.Error(403, ERROR_MESSAGE)
if(spatula.ownedBy != this.userId) //Spatula does not belong to this user
throw new Meteor.Error(403, ERROR_MESSAGE)
return SpatulaCollection.find({_id: deviceId})
})
私はここにパズルの一片を欠けている知っているが、私はそれを見つけることに成功してきました。私の特定の問題に対する解決策がわからない場合、データを表示する前にデータが到着するのを待つ別の方法で私を正しい方向に向けることも大いに感謝します。
編集:いくつかの試行錯誤をして、私のプロジェクトに多少関連の様々な他の記事を読んだ後、私は解決策を考え出した:
export default createContainer(props => {
const sHandle= Meteor.subscribe('spatula.byId', props.deviceId)
return {
user: Meteor.user(),
spatulaReady: sHandle.ready(),
spatula: SpatulaCollection.findOne()
}
}, SpatulaConfig)
それはまだ準備ができて移動することを、私には意味がありません( )コールコンテナを作成するすべての私の問題を修正しかし。
'.ready()'コールをコンテナに入れてみてください。私はそれが反応性に関係していると信じています。 – MasterAM