@react_js

Страница 2480 из 5115
kana
02.11.2017
22:05:56


andretshurotshka?❄️кде
02.11.2017
22:06:34
вуе что ли

хотя не

kana
02.11.2017
22:06:53
без всяких непонятных функций, которые делают какой-то эффект (actions.begin чет там)

Google
Andrew
02.11.2017
22:07:10
Чем санк плох ?

kana
02.11.2017
22:09:55
А я бы оба варианта хотел через. then
да речь там не про then/try, они изоморфны

Dmitry
02.11.2017
22:10:04


kana
02.11.2017
22:10:07
а про begin/createTransaction

Dmitry
02.11.2017
22:10:43
только бегин еще

Alex
02.11.2017
22:10:54
а про begin/createTransaction
Ну я из c# не люблю эксепшены и много где их не рекомендуют создавать

kana
02.11.2017
22:11:34
так так и нет эксепшенов

Alex
02.11.2017
22:11:35
Т.е.мне нравится твой вариант но только с вызовом кормит и реверт через then

Dmitry
02.11.2017
22:12:16


ну так симпатичней

kana
02.11.2017
22:12:23
ну, санк сам по себе выглядит костыльно, это тупо пробрасывание апи стора в экшоны, на уровне с манкипатчингом. Но пофиг на это, саги сами по себе намного гибче и больше возможностей

Alex
02.11.2017
22:12:25
Да

Google
Alex
02.11.2017
22:13:01
ну так симпатичней
То что я и имел в виду, выглядит отлично

Кстати а смысл возвращаться пробинженый промис? Разве только функции комит и реверт не возвращают что-то?

Dmitry
02.11.2017
22:14:52


но можно описывать такую логику

как higher order thunk

hot )

kana
02.11.2017
22:15:19
неееет

это тоже неверный термин, как и hoc

Alex
02.11.2017
22:16:47
Выглядит немного костыльно на самом деле

kana
02.11.2017
22:16:49
(...args) сделай

Dmitry
02.11.2017
22:17:13
ну я для санков юзаю ток 1 аргумент)

всегда, но суть в самом подходе

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

типа отмены реквестов

kana
02.11.2017
22:18:31
но у меня вопрос, как это работает?

он же не может запоминать весь стор

ведь там между запросом и ответом еще что-то может происходить

Alex
02.11.2017
22:19:10


Так должно быть?

kana
02.11.2017
22:19:38
да это же тупо пример, опечатка

Google
Dmitry
02.11.2017
22:19:46


вот если быть точным

Alex
02.11.2017
22:20:11
Может я не шарю)

Dmitry
02.11.2017
22:20:17
в редюсере есть 2 проперти, history, current

Alex
02.11.2017
22:20:26
Вообще лучше сделать мидлвар тогда уж

Dmitry
02.11.2017
22:20:37
когда вызываем начать транзакцию в хистори пушится обьект с текущим стейтом редюсера

kana
02.11.2017
22:20:40
Alex
02.11.2017
22:20:51
Помимо его

Dmitry
02.11.2017
22:21:00
когда ревертим с хистори берется этот обьект

kana
02.11.2017
22:21:38
типа для каждого запроса в хистори уникальный идентификатор, да?

Alex
02.11.2017
22:21:40
А в чем прикол?

Alex
02.11.2017
22:23:43
когда вызываем начать транзакцию в хистори пушится обьект с текущим стейтом редюсера
Не очень понимаю зачем это нудно, если по сути транзакция - запрос который и так выполняет try / catch операции, т.е. Не меняет стейт до завершения, зачем для этого хистори?

Dmitry
02.11.2017
22:24:49
ты делаешь наперед апдейт, т.е begin показываешь какой-то стейт, а потом ждешь респонс

Alex
02.11.2017
22:25:21
Понял

Dmitry
02.11.2017
22:25:21
и если пришел еррор, то ты ревертишься к предыдущему стейту

Alex
02.11.2017
22:26:37
Я обычно делал это в изолированном виде, не трогая основные данные

Тип боксы со статусом которые меняют данные только пока существуют или по статусу

Google
Dmitry
02.11.2017
22:28:02
крч придумать удобный апи со всеми кейсами - это сложно

саги это вообще

http://www.usingcsp.com/cspbook.pdf

отсюда черапали идеи

Alex
02.11.2017
22:28:47
А конкретно какой пример у данного кейса

kana
02.11.2017
22:29:17
да генераторы сами по себе создавались для того, что саги и делают

корутины

Dmitry
02.11.2017
22:30:07
А конкретно какой пример у данного кейса
Ну тут простой кейс, с оптмистик апдейтом

без лишнего бойлерплейта

Alex
02.11.2017
22:30:23
Ну какие данные фигурируют

Тип сообщение в чат или ещё что

Dmitry
02.11.2017
22:30:46
тудушка, сообщение в чат, загружающаяся картинка

kana
02.11.2017
22:30:48
да в принципе любое асинк действие

Dmitry
02.11.2017
22:31:21
любое действие результат которого хочешь показать наперед

kana
02.11.2017
22:31:33
какой экшон вызывает begin? Откуда он берет данные?

а, current

но все равно, какой экшон?

Dmitry
02.11.2017
22:32:26
какой экшон вызывает begin? Откуда он берет данные?
простыми словами, то type: {thunk.name+’:begin’}

Alex
02.11.2017
22:32:32
Лучше сделать отдельный стейт, вот к примеру с редактированием объекта в большом списке твой вариант будет хорошо работать, а для сообщения в чате лучше сделать отдельный блок в котором отображается сообщение до того как будет получено с сервера

Google
kana
02.11.2017
22:33:06
короче, вот контркейс

Dmitry
02.11.2017
22:33:13
хотя это можно стандартализировать

kana
02.11.2017
22:33:20
отправляем второе сообщение, пока не отправилось первое

хобана

Alex
02.11.2017
22:33:23
Ну тут дело в производительности скорее

Dmitry
02.11.2017
22:33:32
у меня у каждого санка в мету requestId)

в контексте

законтрил ?

kana
02.11.2017
22:34:12
то есть я вот спрашивал, это для каждого запроса уникальный идентификатор?

Dmitry
02.11.2017
22:35:03
то есть я вот спрашивал, это для каждого запроса уникальный идентификатор?
пока размышляю над этим, но или уникальный айдишник, или что-то типа метода identify

который айдишник генерить с аргументов

kana
02.11.2017
22:35:19
а если мы начинаем один, начинаем второй, второй завершается и меняет стор на успешный, а первый падает и меняет стор на тот, что был изначально

Alex
02.11.2017
22:35:48
Боксы помогут

В этом плане, доп стейт для асунк методов будет работать хорошо

Вообще я думаю это единственный правильный вариант

Dmitry
02.11.2017
22:37:05
или что-то с редюсерами мутить или еще что-то придумывать

Alex
02.11.2017
22:38:04
Тип если есть стор сообщений, то у каждого сообщения может быть на пример дополнительный стейт который ещё не одобрен но отображается приориьетно

kana
02.11.2017
22:38:06
нужно хранить не данные, а миграции

в нашем случае это функция-ролбек

Страница 2480 из 5115