Господа, пользователи ре-фрейма – сталкивались ли вы с вопросом управления ключами вьюх? Я изначально кормил реагенту айди сущностей как ключ вьюхи. Но когда новая сущность под вьюхой сохраняется и обретает серверный айди, её ключ меняется. В итоге я занимаюсь не самыми красивыми вещами с управлением ключами. Подозреваю что можно как-то лучше жить
и как ты это делаешь сейчас?
@ognivo а какая проблема (после сохранения сущности) использовать с ней новый ключ (серверный)? т.е. старая сущность исчезнет, новая появится (если проблема и есть, она наверно связана с, например, uncontrolled components, как здесь? https://www.robinwieruch.de/react-list-key/ )
@andrewboltachev неприятность – в потере фокуса
@ognivo ага... да, это важно
если в сущности есть редактируемый компонент, а в UX сохранение на автомате, а не нажетиях сейва
а вообще, есть клиентские id?
в каком-либо явном виде?
@ognivo получается, что если при смене ключа фокус в любом случае потеряется, то ключ должен оставаться также в любом случае неизменным (конечно, понятно, что это актуально только во время того, как идёт редактирование данной конкретной сущности)
ну и значит, на время данной сессии нужно поддерживать (хранить в app-db?) hashmap неких "key-overrides" наверно, где "серверным" ключам будут ставиться в соответствие изначальные клиентские
(for [element elements]
^{:key (get @(re-frame/subscribe [:react-key-overrides] (:id element) (:id element))}
[:div ...])
ну и наполняться этот :react-key-overrides (т.е. что за ним стоит по событию :on-success
при сохранении (хотя там не обязательно например cljs-ajax, может быть и сокет и т д). т.е. "в нагрузку" с бэкенда должен ещё придти старый ключ либо как-то так
А ваше решение отличается?