2016-06-08 23 views
0

我正在使用流星廚師基地,我遇到了使用react-komposer的反應問題。我有一個訂閱調用,它從url(lectureId,courseId)中獲取id,首先查找(並在需要時創建)帶有這些id和用於獲取當前Question訂閱的currentQuestion字段的userLecture文檔。我稍後更新currentQuestion標識,但問題訂閱不更新,直到硬頁刷新。如果輸入實際上沒有變化,我怎樣才能使該訂閱成爲被動的?問題製作React-Komposer反應多個訂閱

const composer = (params, onData) => { 
  let subscription = Meteor.subscribe('questionFromSlugs', params.courseSlug, params.lectureSlug); 
  if (subscription.ready()) { 
    const question = Questions.findOne(); 
    const userLecture = UserLecture.findOne(); 

    onData(null, { question }); 
  } 
}; 
export default composeWithTracker(composer, Loading)(QuizQuestion); 

這是流星訂閱:

Meteor.publish('questionFromSlugs', function(courseSlug, lectureSlug){ 
  check(courseSlug, String); 
  check(lectureSlug, String); 
  check(this.userId, String); 
  let user = this.userId; 
  let lecture = Lectures.findOne({courseSlug: courseSlug, slug: lectureSlug}); 
  let course = Courses.findOne({slug: courseSlug}); 

  if (lecture != null && course != null) { 

    var thisLectureScore = UserLecture.find({ 
      userId: user, 
      lectureId: lecture._id 
    }).count(); 

    if (thisLectureScore == 0){ 
      UserLecture.insert({ 
        userId: user, 
        courseId: course._id, 
        lectureId: lecture._id, 
        lectureScore: 0, 
        currentLevel: 1 
      }); 
    } 

    let userLecture = UserLecture.findOne({ 
      userId: user, 
      courseId: course._id, 
      lectureId: lecture._id 
    }); 

    if (userLecture != null){ 
      return [ 
        Questions.find({_id: userLecture.currentQuestionId}), 
        UserLecture.find({ 
          userId: user, 
          courseId: course._id, 
          lectureId: lecture._id 
        }) 
      ] 
    } 
  } 
}); 

回答

0

你確定它不會改變?我有類似的問題。它隱藏在我如何填充視圖。你使用的是什麼UI框架?我想反應。請提供我的觀點,我想我知道你的問題的解決方案。