
Дмитрий
18.06.2018
14:35:54

Alex
18.06.2018
14:35:57

Andrey
18.06.2018
14:36:04

Google

Сергей
18.06.2018
14:36:19

Andrey
18.06.2018
14:36:32
Давайте SQL ещё притащим, камон!

Alex
18.06.2018
14:36:59

Andrey
18.06.2018
14:37:13

Дмитрий
18.06.2018
14:37:13

Andrey
18.06.2018
14:37:38

Сергей
18.06.2018
14:37:42

Alex
18.06.2018
14:38:02

Сергей
18.06.2018
14:38:17

Alex
18.06.2018
14:39:02

Andrey
18.06.2018
14:39:20
Я не вижу проблемы, чтобы у компонента было 100500 сторов.

Google

K
18.06.2018
14:39:57
Привет, у меня проблемка небольшая, warning.js?da67:33 Warning: Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.
Никак трейс не найду, не пойму, куда смотреть, может посоветуете?

Alex
18.06.2018
14:40:06

Andrey
18.06.2018
14:40:24
Почему не разделить жеско на независимые и связные?
Вам не кажется, что вы создаёте проблему там, где её нет?

Дмитрий
18.06.2018
14:41:41
ты хочешь написав реализацию на ризоне, получить удобное апи в жс?
Да, у ризона есть хелперы для интеропа его структур с жс кодом, более того, это даже не обязательно
Вот смотри, ризон компилируется в исходники у меня (чисто для наглядности):
https://github.com/zerobias/effector/blob/develop/src/datatype/cmd/Cmd.re
https://github.com/zerobias/effector/blob/develop/src/datatype/cmd/Cmd.bs.js
И это ещё с учетом того, что при полном переносе движка на ризон из re файла будет убран cmdT и bs.deriving abstract

Сергей
18.06.2018
14:42:13

Alex
18.06.2018
14:42:35
если так, то вернемся к мобх, а мне не очень хочется
я знаю реализацию, которая позволит решить кейс который я скинул, при этом полная модульность и независимость модулей, но при этом получается совмещённая модель разделённого/общего стора, т.е. всё же стор будет как-бы общий, но работать будешь с его частями как с отдельными (за исключением моментов связей между сторами)

Сергей
18.06.2018
14:42:40

Дмитрий
18.06.2018
14:43:09
Да, очень. Вся папка Cmd с типами и конструкторами меняется на один файлик

Сергей
18.06.2018
14:43:44

Alex
18.06.2018
14:44:01
сейчас я пытаюсь решить, где и как должны подключаться отношения между сторами, ибо это не тривиально

Дмитрий
18.06.2018
14:44:15

Сергей
18.06.2018
14:44:20

Илья
18.06.2018
14:44:25
по-поему в чате реакт, совсем не реакт. Админы - остановитесь!

Сергей
18.06.2018
14:44:39

?
18.06.2018
14:44:46
У меня в стейте компонента есть пассив объектов, как заменить объект с определенным индексом?

Сергей
18.06.2018
14:44:59

Илья
18.06.2018
14:45:17

Google

Alexander
18.06.2018
14:45:22

?
18.06.2018
14:46:07
const itemIndex = this.state.data.findIndex(item => item._id === id);
const updatedItem = this.state.data[itemIndex];
const newData = Object.assign({}, this.state.data);
newData[itemIndex] = updatedItem;

Дмитрий
18.06.2018
14:46:20
и вычисление зависимостей происходит там?
Нет, зависимости накидываются при создании эвентов, сторов, мапов и т.д. Преимущество и разница в том, что это статическое вычисление, его препак вообще в константу сворачивает
на момент запуска событий граф зависимостей уже есть, по нему нужно просто пройтись, последовательно выполняя нужные инструкции

?
18.06.2018
14:46:36
А как безопасно засунуть новый массив в стейет?

Alex
18.06.2018
14:46:49
покажи?
это ограниченная версия в которой я запретил внутреннему стору знать о внешнем, но если изменить это правило, то будет ifFullPath(f => f.users[0].lastName)

?
18.06.2018
14:47:02
Есои я делаю обычно this.setState({ data: newData }) у меня все отваливается

Сергей
18.06.2018
14:47:16

Alex
18.06.2018
14:47:27
yield возвращает инструкции по изменению lastName у текущего модуля

Kendr
18.06.2018
14:47:30

Илья
18.06.2018
14:47:51

Сергей
18.06.2018
14:47:53

Дмитрий
18.06.2018
14:47:58

Kendr
18.06.2018
14:48:02

Сергей
18.06.2018
14:48:24
Признаюсь. Ничего не понятно

Илья
18.06.2018
14:48:44

Сергей
18.06.2018
14:48:49

Alex
18.06.2018
14:48:57
https://codesandbox.io/s/github/Wroud/react-painlessform/tree/master/examples/ts
этот пример не совсем про изменения в корне стора
А зависимости как резолвишь
это и есть резолвинг зависимости, мне приходит event об изменении чего-то в сторе, функцией is я могу узнать что именно изменилось, и вернуть какую-то реакцию

Google

Сергей
18.06.2018
14:49:51
Да))
Ты уже сделал тулзу для отрисовки этого графа?)

?
18.06.2018
14:50:56

Alex
18.06.2018
14:50:56
но в текущей версии запрещено отслеживать изменения которые пришли из hight ordered стора, т.е. подразумевается отсутствие знания структуры всего состояния

Сергей
18.06.2018
14:51:20
Надо упрощать

Admin
ERROR: S client not available

Alex
18.06.2018
14:52:25
Слишком сложно...
это максимально просто, зайди в пример в UserForm.tsx потыкай в форме и нажми сабмит, посмотри лог консоли

Сергей
18.06.2018
14:52:36

Сергей
18.06.2018
14:53:48

Сергей
18.06.2018
14:53:56

Сергей
18.06.2018
14:54:28
Ну я так и написал)

Alex
18.06.2018
14:55:07

Дмитрий
18.06.2018
14:55:11
Ты уже сделал тулзу для отрисовки этого графа?)
Естественно!) Я её заранее сделал, визуально все проблемы очевидны становятся, я бы иначе даже не смог бы это разработать
https://github.com/zerobias/effector/blob/develop/src/effector/__tests__/__snapshots__/index.test.js.snap#L455
Создается визуализация здесь
https://github.com/zerobias/effector/blob/develop/src/effector/__tests__/index.test.js#L48
Внимание, не пугайся, в начале снапшота будет огромная НЁХ, граф — дальше ?
* в визуализации это параллельные команды,
1. в визуализации — это последовательные команды
Минусы: в данный момент сторы в графе обозначены как пара команд: апдейт, а затем фильтрация
Визуализатор реализуется в файлах с названием show.js

Alex
18.06.2018
14:57:20

Дмитрий
18.06.2018
14:57:21
Создается визуализация здесь
https://github.com/zerobias/effector/blob/develop/src/effector/__tests__/index.test.js#L48

Arthur
18.06.2018
14:57:30
подскажите плз
при вызове createStore и передачи туда редьюсера, который был создан через combineReducers, стейту приложения присваивается ключ - имя моего редьюсера. в доке написано, что это штатное поведение, но в их примерах этого имени почему-то нет. как мне его убрать ?

Google

Arthur
18.06.2018
14:57:50
ибо в итоге в mapStateToProps приходится ещё и имя редьюсера вписывать
const mapStateToProps = (state) => {
return {
friends: state.friendsReducer.friends.map(
id => state.friendsReducer.friendsByIds[id])
};
}

Сергей
18.06.2018
15:01:30


Alex
18.06.2018
15:01:58
но проблема в концепции независимых сторов, чтобы отследить изменение в верхнем сторе (это возможно без изменения текущей реализации), мы должны знать о структуре верхнего стора, по крайней мере тех частей что нас интересуют, а это нарушает принцип модульности, наш модуль становится зависим потенциально от всей структуры стора (в зависимости от разницы глубин сторов)

Дмитрий
18.06.2018
15:02:28
Спойлер — это не проблема, а её решение
Иерархичность не нарушает модульности

Сергей
18.06.2018
15:03:35

Alex
18.06.2018
15:03:37

Сергей
18.06.2018
15:03:45

Дмитрий
18.06.2018
15:04:05

Alex
18.06.2018
15:05:42
ладно знание, хрен с ним, допустим у нас описан интерфейс всего стора целиком, где и как нужно подключить слушатель интересного нам значения?

Дмитрий
18.06.2018
15:06:02
То есть нет редаксовского maybe-sync-maybe-async
Асинхронные функции же (эффекты) логики не содержат

Санжар
18.06.2018
15:07:07
ребят, есть рестфул апишки с карточками товаров ? что то на подобии JSONPlaceholder

Maksim
18.06.2018
15:07:10
У меня есть 2 компонента, допустим, A и B, есть еще 3ий компонент - C, который состоит из A и B. Компоненты A и B протипизированы, нужно ли мне компонент C типизировать тоже так же как A и B? Ему же будут приходить в пропсы данные, которые будут передаваться в A и B.
Например:
A.propTypes = { className: PropTypes.string }
B.propTypes = { className: PropTypes.string }
Нужно ли делать в C так же?
C.propTypes = { className: PropTypes.string }
Т.е. в C будет приходить className и передаваться в A и B.

Дмитрий
18.06.2018
15:07:56
А как ты логику тестируешь?
Далее, если нужно мокнуть функцию — у тебя есть use, если нужно проверить реакцию на ее падение — эвент effect.fail

Сергей
18.06.2018
15:08:23

Дмитрий
18.06.2018
15:08:30
Ну да, это точно

Сергей
18.06.2018
15:08:43

?
18.06.2018
15:09:00