2015-12-03 4 views
1

Я создаю приложение ClojureScript, и у меня возникают проблемы с использованием реагента для заполнения таблицы данными. Два вопроса, я имею ТОННА предупреждения о формеВвод данных в таблицу в реакторе Clojurescript

Every element in a seq should have a unique :key

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

(defn foo 
    [] 
    [:table 
    (for [i (range 10)] 
    [:tr (for [j (range 3)] 
      [:td (str "Row " i ", Col " j)])])]) 

И когда я вызываю следующее, я получаю предупреждение и зависания страницы, хотя это делает правильно:

(reagent/render [foo] (dom/getElement "results")) 

ли я приближался к процессу заполнения данные неправильным образом? Есть ли более простой способ?

+0

Посмотрите [здесь] (HTTP: // stackoverflow.com/questions/33446913/reagent-react-clojurescript-warning-every-element-in-a-seq-should-have-a-unique), чтобы преодолеть уникальную ключевую проблему. –

ответ

3

Предупреждение, которое вы получаете, связано с реагентом, требующим уникального значения ключа для динамических элементов, созданных вдоль этих линий. Есть несколько способов исправить это. Другая вещь, о которой вам нужно помнить, - это возможные проблемы с использованием, потому что она генерирует ленивые последовательности. Хотя это работает для вас в этом контексте, оно может создавать тонкие проблемы с повторной рендерингом.

Мой совет должен был бы создать функцию для отображения элемента TD и префикс рендеринга с

^{:key (str i j)} [:td (str "Row " i ", Col " j)] 

The (ул I J) будет создать уникальный ключ для каждого элемента тд. Другая вещь, которую я считаю полезной, - это использовать, например,

(into [:tr] 
    (for [j (range 3)] 
    ^{:key (str i j)} [:td ....]))) 

Я разрабатываю собственное приложение с использованием реагента. Это не очень хороший код, и он по-прежнему требует много повторного факторинга, но я сделал такие таблицы, а также разбитые на страницы таблицы и несколько других компонентов реагентов, таких как вкладки, меню боковой панели и т. Д. Его можно найти по адресу my github arcis project это должно дать вам некоторые идеи, если ничего другого не

Существует также некоторые хорошую документацию относительно реагента и как он делает, и некоторые из тонких «подводных камней» в re-frame wiki