2016-07-14 3 views
2

Я попытался управлять своим состоянием приложения Riot с помощью Redux, но заметил, что когда что-то меняется в моей модели (простой массив элементов), каждый элемент, созданный из этой коллекции, рендеринг, даже если модификация относится к одному элементу.Riot.JS: неизменная структура данных вызывает нежелательный рендеринг

I reproduced the issue here

С изменяемым редуктора нет никаких проблем, в обоих случаях я наблюдаю изменения в магазин, чтобы вызвать обновление вида (ненужное с изменяемыми данными).

this.on('mount',() => { 
    opts.store.subscribe(() => { 
    this.update({ 
     items: opts.store.getState() 
    }) 
    }) 
}) 

gif demonstrating that DOM of my list is completely re-rendered

Я думал виртуальный чек РОМ Бунт только пересборку измененные части DOM ...

ли я что-то не так?

ответ

1

Добавить no-reorder в цикле:

<li no-reorder each={ items } onclick={ toggle }> 
    <span>{x}</span> 
</li> 
+0

Кажется, работает отлично, есть ли какие-либо ограничения, что делать? – Freez

+0

@Freez К сожалению, я не знаю. – pongo

+0

«В riot v2.3, чтобы сделать рендеринг рендеринга более надежным, узлы DOM будут перемещаться, вставляться и удаляться всегда в синхронизации с вашими коллекциями данных: эта стратегия сделает рендеринг медленнее по сравнению с предыдущими версиями 2.2. алгоритм рендеринга вы можете добавить атрибут no-reorder к узлам цикла ». от http://riotjs.com/guide/ –