2014-11-19 5 views
0

Возможно ли, чтобы компонент вызывал весь свой жизненный цикл, когда «перемещал» его из одного контекста в другой?Использование ключей для идентификации вложенных компонентов в React.js

Первоначально у меня был список компонентов, с ключом по id. Это было полезно, потому что, когда я переупорядочу список, компоненты не будут повторно использовать все методы жизненного цикла, они просто «переместятся».

Стало очевидно, что мой проект должен был перейти от [Виджета] к [Ряд], где Row = [Виджет]. Элементы теперь перемещаются из строки в строку, но имеют одинаковый идентификатор все время. Независимо, все (включая componentWillMount) методы жизненного цикла вызывают, когда компонент переходит в новый контекст.

Возможно ли идентифицировать компонент во всем контексте визуализации во избежание такого поведения? Или мне нужен другой дизайн? Алгоритм Примирение

[  ][  ][  ] <- rows, don't care 
||||||| ||||||| ||||||| <- significant 
    ^<- this 
[  ][  ][  ] 
|||||| |||||||| ||||||| 
     ^<- should be able to move 
+0

Вы пробовали указать ключи для строк также? – nilgun

+0

Да, строки в основном церемониальные, поэтому я попробовал их с помощью индекса итерации. Кажется, не помогает. – nql

ответ

0

подробно объясняется в документации: http://facebook.github.io/react/docs/reconciliation.html

Из того, что я понимаю, читая ее, вы не можете добиться того, чего вы хотите:

В текущей реализации, вам может выразить тот факт, что подэлемент был перемещен среди его братьев и сестер, но вы не можете сказать, что он переместился где-то в другом месте. Алгоритм будет повторно отображать это полное дерево .

+0

Спасибо, что нашли это. Было бы неплохо, если бы вы могли указать контекст согласования и иметь элементы с ключами, которые сами регистрируются с ним или что-то в этом роде. – nql

Смежные вопросы