
Сергей
25.10.2018
02:27:50

Andrey
25.10.2018
02:28:29

Сергей
25.10.2018
02:29:03

Kelin
25.10.2018
02:29:22
Любой псевдокод, который покажет, как компонент берет данные из стора и как логика взаимодействует со стором

Google

Kelin
25.10.2018
02:29:34
Так, что при изменении одного из трех, не нужно менять все остальное

Сергей
25.10.2018
02:29:46
да
Что-то типа такого?
function() {
incrementI()
if (getI() > 5) {
alert();
}
}

Andrey
25.10.2018
02:30:35

Сергей
25.10.2018
02:31:33

Andrey
25.10.2018
02:32:06

Сергей
25.10.2018
02:32:31

Andrey
25.10.2018
02:33:02
А если вообще конструировать стор с локальностью, то там пипец какие проблемы с описанием апи.

Kelin
25.10.2018
02:33:14
Если я правильно понял, то
1) Стор пилит методы, которые меняют стор
2) Есть какой-то "компьютед", который, независимо от изменений организации, возвращает всегда стейт одного формата
Но в таком случае, здесь даже не один бойлерплейт, а два. Пилить методы на каждый i++ и преобразовывать стейт при каждом изменении структуры стора к одному виду

Google

Andrey
25.10.2018
02:33:36
И придётся завязываться на view-либу, потому что мы с помощью неё строим дерево компонентов.
А это мне оооочень не нравится.

Сергей
25.10.2018
02:34:01

Andrey
25.10.2018
02:34:42
Я поэтому и хочу пробрасывать key в компонент, чтобы переложить генерацию key на стор, чтобы человеку не прешлось с этой говной возиться.

Сергей
25.10.2018
02:35:26
Если я правильно понял, то
1) Стор пилит методы, которые меняют стор
2) Есть какой-то "компьютед", который, независимо от изменений организации, возвращает всегда стейт одного формата
Но в таком случае, здесь даже не один бойлерплейт, а два. Пилить методы на каждый i++ и преобразовывать стейт при каждом изменении структуры стора к одному виду
ты правильно понял.
я ищу способы решения этих кейсов, по идее это решаемо через прямую апишку.
но опять же как мы все понимаем, такого не будет часто, кейс такого подхода в переиспользуемости стора по всеми приложению, в том числе в тестах и внутри вложенной логики

Andrey
25.10.2018
02:36:55
Без этого смысла пилить замену эффектору просто нет.

Сергей
25.10.2018
02:37:25

Andrey
25.10.2018
02:37:41

Kelin
25.10.2018
02:37:49

Сергей
25.10.2018
02:37:55

Andrey
25.10.2018
02:38:19

Сергей
25.10.2018
02:38:25

Andrey
25.10.2018
02:38:30

Сергей
25.10.2018
02:38:40

Andrey
25.10.2018
02:38:55
Но фишка в том, что стор надо проектировать именно от биндингов, а не наоборот.

Сергей
25.10.2018
02:39:26

Kelin
25.10.2018
02:39:43

Google

Сергей
25.10.2018
02:39:58
кстати, как в эффекторе с тестированием логики?

Andrey
25.10.2018
02:40:18

Artyom
25.10.2018
02:40:34

Andrey
25.10.2018
02:40:34
И если удасться решить проблему, то сразу решается проблема с ssr.

Kelin
25.10.2018
02:41:27
Ты сделал <A />
То есть создал новый "стейт"
Скажем, это форма
При нажатии кнопки закрыть, компонент анмаунтится и удаляется запись
При нажатии кнопки сохранить, компонент анмаунтится и сохраняется запись
А еще, что будут делать компоненты на вложенности? Откуда они будут брать стор? Как они поймут, какой стор брать?
Я придумал решение на контекстах, но оно тоже просасывает на сложных кейсах

Сергей
25.10.2018
02:42:45

Artyom
25.10.2018
02:42:56
Не понимаю вопроса. Распиши, пожалуйста.
Ну я так понимаю качественно реактивные сторы могут предоставлять на столько точечные подписки, что если обновление до view дошло - можно мержить в реальный дом. Но при этом остается проблема со списками, когда аппенд 1 элемента заставляет пересчитать весь список - тут уже весь список в дом дорого класть

Andrey
25.10.2018
02:43:36

Artyom
25.10.2018
02:44:13
Не понимаю вопроса. Распиши, пожалуйста.
Кстати, я уже описывал тут идею. Если разделить список на множество мелких списков и по отдельности за ними следить, то проблема производительности "вставки" списка в дом должна уйти

Kelin
25.10.2018
02:44:17
?
А что тебя интересует? Просто апи настолько простое, что я даже хз, какие проблемы могут быть

Andrey
25.10.2018
02:44:58

Сергей
25.10.2018
02:45:31

Artyom
25.10.2018
02:45:36

Andrey
25.10.2018
02:45:45

Сергей
25.10.2018
02:45:48
а как тестить случай, с эффектами и зависимостями сторов?

Andrey
25.10.2018
02:46:32
почему это!?
Потому что для этой проблемы нет решения без добавления в сам реакт списка на основе деревьев. Тупо енумерабл не даёт тебе апи, который позволит рендерить всё эффективно.

Сергей
25.10.2018
02:49:08

Google

Kelin
25.10.2018
02:49:25
effect.use(fakeRequest)

Сергей
25.10.2018
02:49:52
а, точно, паралелльные тесты не будут работать

Kelin
25.10.2018
02:50:06
то, что ответ запроса надо возвращать в нем

Andrey
25.10.2018
02:50:16

Artyom
25.10.2018
02:51:07

Сергей
25.10.2018
02:51:14
Почему?
test(‘foo’, async t => {
effect.use(stub().returns(2))
// if i call effect() here, what stub would called
})
test(‘bar’, async t => {
effect.use(stub().returns(3))
})

Andrey
25.10.2018
02:51:33

Admin
ERROR: S client not available

Kelin
25.10.2018
02:52:07

Сергей
25.10.2018
02:52:10
Недогоняю.
параллельные тесты запускаются одновременно
а effect.use это просто замена содержимого

Kelin
25.10.2018
02:52:14

Andrey
25.10.2018
02:52:17
Да просто map должен быть не массивный а свой, в стиле редуса...
Ну не важно.
Вопрос в том, что, казалось бы, еще шажок и стейт-менеджера будет достаточно для полной замены реакта. Но, если подумать, у нас просто получается ангуляр =D
Но у ангуляра свои проблемы.
Какой компромис между этим?
Нужна декларативная реактивность. Эффектор мне, все же, кажется не достаточным в этом плане
Ты переоцениваешь людей, которые будут пользоваться стором. Я уверен, что можно написать говно, которое исправит только виртуал дом.

Kelin
25.10.2018
02:52:23
effect(payload)

Artyom
25.10.2018
02:52:41
объявление эффекта статическое и use глобальный. Все из-за того же проблемы с ssr

Сергей
25.10.2018
02:52:50

Andrey
25.10.2018
02:52:59
А, вот ещё косяк, да.

Сергей
25.10.2018
02:53:06

Google

Andrey
25.10.2018
02:53:12
Не думал, кстати, над этим.

Сергей
25.10.2018
02:53:25
я статически заменяю значение в эффекте ОДНОВРЕМЕННО из нескольких тестов
так работают параллельные тесты

Kelin
25.10.2018
02:53:41

Сергей
25.10.2018
02:53:54
а теперь напиши мне 5-10 таких тестов
и гарантируй что будет всё ок

Artyom
25.10.2018
02:54:08
2 достаточно

Andrey
25.10.2018
02:54:19
Ну чего ты как маленький?)

Сергей
25.10.2018
02:54:26

Kelin
25.10.2018
02:54:51
и что произойдет? типа до вызова эффекта второй юз прокнет?

Сергей
25.10.2018
02:55:25

Kelin
25.10.2018
02:55:45
ну с этим хз. я не гуру тестов

Artyom
25.10.2018
02:56:18

Kelin
25.10.2018
02:57:00
я вот тоже не понимаю. как в изолированном тесте может прокнуть юз из другого теста

Andrey
25.10.2018
02:57:18

Kelin
25.10.2018
02:57:20
если только какой-нить таймаут

Artyom
25.10.2018
02:57:39
А вообще все норм

Andrey
25.10.2018
02:57:58