>>> Еще хотел бы добавить свое мнение на тему обмена данными между компонентами.
Я позже напишу довольно комплексную статью что и как я использую. Но скорее всего это будет после еще нескольких статей про реакт, так как многие просто не моймут о чем речь. Но коротко расскажу что у меня и как.
Во-первых, как я и говорил, я не использую редукс. Пара основных причин:
1. Не копал очень глубоко, но мое предположение, что он использует что-то типа [а-ля lodash].cloneDeep, скорее всего для того, чтобы иметь разницу состояний, чтобы можно было потом эту разницу отловиться в методах типа componentWillReceiveProps. Из-за этого я наблюдал кучу тормозов в своих интерфейсах, для устранения которых приходилось исхищряться с методами типаshouldComponentUpdate.
2. Мне не нравится эта децинтрализованность в описании редюсеров и экценов.

В итоге я перешел на flux (который как раз и использует immutablejs). Но и его я чуть под себя модифицировал. Теперь у меня примерно такие конструкции используются:
store.getDispatcher().dispatch(store.actions['UPDATE'], item, newState);
Как видно, тот пляшешь от одного исходного объекта store. И это я еще оптимизирую, чтобы вовсе было store.reduce("UPDATE", item, data);

Такие действия не вызывают изменений в стейтах и пропсах, но в нужных компонентах просто подписываешься на диспетчер через store.getDispatch().register и все, там уже сам решаешь когда что принимать и что с этим делать.

Есть несколько преимуществ в этом.

1. Самое главное: я в хранилищах могу хранить реальные действующие объекты и в дальнейшем обновлять их как напрямую (если очень хочется), так и находить их с помощью соответствия имеющегося объекта. Пример:
items.map(item => <Button onClick={event => {store.getState().find(n => n === item)}.do(...)} >{item.name} </Button>)
Мне не нужно в таком случае никаких идентификаторов. Именно это позволяет создавать сразу несколько временных объектов, даже пустых, а потом нелинейно их редактировать.

2. Производительность. Из-за отсутствия каких-либо операций копирования, даже множественные обходы не дают какой-то ощутимой нагрузки.

Вернуться к списку комментариев