meteorreact native只更新1条目时,重绘每个回路中的每个实体

这个应用程序部署在这里: memoryapp.meteor.com源代码可以在这里的git memoryapp.meteor.com中find: https : //github.com/SnappyCroissant/memoryapp

重置应用程序运行

 Cards.update({}, {$set: {state: 'play'}}, {multi: true}) 

从控制台。

我知道让客户端访问像这样的集合是不好的,应用程序远没有准备就绪,我只是通过meteorfind我的方式。

目前,只要在卡片上运行任何更新,整个DOM重绘,除了我称之为持久化的那些元素。 据我所知虽然元素只能在更新时重新绘制,或者我误解了react native的工作方式?

脚本中唯一真正的dynamic变化是卡中对象的'state'属性正在改变。 然而,它重绘每个属性和每个DOM元素,除非显式声明不要。

是因为它们全部传递给一个数组中的模板? 如果是这样,最好的替代方法是什么?

结构有点大杂乱,因为这是一个学习经验,所有重要的问题(据我所知)住在client/memory.jsserver/model.js

要获得#each的反应式实现,您需要将LocalCollection.Cursor对象直接传递给#each 。 一个数组将不会做任何特殊的事情,当任何元素被改变时,整个数组将被重做,这就是你所看到的:

换句话说,这应该做你想要的:

  return Cards.find({ deck_id: deck['_id'] }, {sort: {order: 1}}) 

这会导致额外的重新渲染:

  return Cards.find({ deck_id: deck['_id'] }, {sort: {order: 1}}).fetch();