@react_js

Страница 4862 из 5115
khades
23.09.2018
06:49:57
есть ли способ взять данные из редакс-стора и опционально триггернуть экшн? (redux+saga)

https://github.com/khades/servbot-react-frontend/tree/master/ts/channelName

Dmitry
23.09.2018
06:54:25
А кто-нить пользуется https://github.com/jfairbank/redux-saga-test-plan для тестирования саг?

khades
23.09.2018
07:04:12
выглядит интересно

Google
Max
23.09.2018
07:33:55
есть ли способ взять данные из редакс-стора и опционально триггернуть экшн? (redux+saga)
данные берутся с помощью эффекта select, далее в if или case как угодно, можете “опционально” тригернуть экшен с помощью эффекта put

khades
23.09.2018
07:34:09
если их там нету - сделать экшн

Max
23.09.2018
07:34:51
А кто-нить пользуется https://github.com/jfairbank/redux-saga-test-plan для тестирования саг?
использую для юнит тестирования (testSaga функцию), классная штука. Но местами приходится тестировать по документации (например, если есть свои эффекты или для тестирования некоторых моментов, которые не были задуманы автором). Был опыт даже переписывания тестов, количество строк кода уменьшилось приятно)

khades
23.09.2018
07:35:46
и что мешает?
ни малейшего понятия как сделать, вижу MapStateToProps и MapDispatchToProps

а надо сделать и то и то сразу

Dmitry
23.09.2018
07:36:23
Я использую expectSaga, но часто проскальзывают косяки, когда забываю замокать какой-нить вызов api и потом в тесте Connection refused to localhost:80

Max
23.09.2018
07:37:20
ни малейшего понятия как сделать, вижу MapStateToProps и MapDispatchToProps
в вашем компоненте, в componentDidMount проверяете - есть данные? если да - то делаем А, если нет - делаем Б (в случае Б как раз тащите данные откуда нужно)

khades
23.09.2018
07:37:44
в вашем компоненте, в componentDidMount проверяете - есть данные? если да - то делаем А, если нет - делаем Б (в случае Б как раз тащите данные откуда нужно)
ну проблема в том что этот механизм надо юзать в нескольких местах, пока придумал только вынос этого куска в отдельный компонент

khades
23.09.2018
07:38:04
что логично.
ну тогда отлично

ток ещё с локализацией надо подружить

Google
Max
23.09.2018
07:38:29
однако, я не совсем понимаю задачу, обычно если данных нет - рисуют какой-то прелоадер или что-либо еще, и запрашиваю их

локализация тоже никак не пересекается с проблемой, берите и делайте (кэп), я использую react-intl

khades
23.09.2018
07:39:26
нет, мне надо из шаблона локализации подставлять результат резолва данных по айдишнику

Max
23.09.2018
07:39:40
Я использую expectSaga, но часто проскальзывают косяки, когда забываю замокать какой-нить вызов api и потом в тесте Connection refused to localhost:80
у саги же как раз кайф в том, что можно просто тестировать порядок эффектов, и мокать не нужно будет такие вызовы.

khades
23.09.2018
07:39:42
userID -> userName

Max
23.09.2018
07:41:04
khades я, в общем, тут не вижу ни проблемы, ни вопроса =) поэтому делайте, все выглядит стандартно.

Dmitry
23.09.2018
07:43:07
Там момент — что тестирование порядка эффектов — по мне это слишком низкоуровнево и хрупко. При любом изменении саги придётся менять тесты. Тогда уж проще через snapshot'ы.

http://redux-saga-test-plan.jeremyfairbank.com/integration-testing/snapshot-testing.html

khades
23.09.2018
07:52:25
Это слишком расплывчатый вопрос. :)
ну как вижу напрямую нельзя, так что когда такое надо делать, надо оборачивать в компонент, такой ответ я нашёл

Dmitry
23.09.2018
07:53:06
что значит "напрямую нельзя"?..

Max
23.09.2018
07:53:15
Там момент — что тестирование порядка эффектов — по мне это слишком низкоуровнево и хрупко. При любом изменении саги придётся менять тесты. Тогда уж проще через snapshot'ы.
Разумеется! При любом изменении саги, по уму надо сначала тест поменять =) (но это редко кто соблюдает) p.s. позицию вашу понимаю, но мне больше нравится - поправить тест, так как это достаточно легко

khades
23.09.2018
07:53:44
что значит "напрямую нельзя"?..
это касается именно отображения данных в компоненте, а не на уровне саг

Dmitry
23.09.2018
07:54:12
это всё так расплывчато, непонятно что именно хочется добиться

khades
23.09.2018
07:54:59
есть внешний сервис, где хранится соответствие userID -> username, надо подтягивать эти username налету складывая в стор

Dmitry
23.09.2018
07:57:30
ну, как вариант, — в componentDidMount отправляется action, сага её перехватывает, проверят, что пользователь загружен, если нет — загружает

khades
23.09.2018
07:58:09
уже сделол

Duego
23.09.2018
08:32:18
Делал похожую штуку, сейчас точно не помню, но на навскидку нужно запомнить высоту контейнера до, и после и ручками отскролить себя на разницу
После добавления элементов высота контейнера становится равной высоте добавленных элементов. Остальные же не добавляются в дом. Получить сразу высоту всего контейнера не получится. До сих пор в поисках решения. Может кто нибудь знает куда двигаться?

khades
23.09.2018
08:42:23
скроллить на якорь?

Vitaly
23.09.2018
09:29:11
После добавления элементов высота контейнера становится равной высоте добавленных элементов. Остальные же не добавляются в дом. Получить сразу высоту всего контейнера не получится. До сих пор в поисках решения. Может кто нибудь знает куда двигаться?
Я не использовал виртуальный скролла тогда, просто на определенной позиции скролла от верха догружал элементы. Давай уточним, если я правильно понимаю сейчас проблема в том , что после подгрузки элементов - скроллится в топ, и фактически старых элементов в доме уже нет

Google
Vitaly
23.09.2018
09:29:40
Если я не забыл принцип действия виртуал скроллов

Вернее даже не так, элементы теже, только данные в них другие

Andrew
23.09.2018
09:40:34
Кстати рили хорошая задачка

Vitaly
23.09.2018
09:41:23
Ну насколько я помню, я ловил такой же баг пробуя несколько разных либ, проблема именно при добавлении элементов сверху. Чисто теоретически, в если в либе нет нормального апи для решения проблемы, можно пробовать отменять скролл preventDefault, то есть слушать скролл у контейнера, и каким то образом отлавливать событие подгрузки элементов, тип массив увеличился в размере

Это попахивает костылем жутким, но можно подумать в этом направлении

mihail
23.09.2018
09:43:07
что-то не пойму в чем проблема

объяснит кто в 2 словах в чем суть ?

может я рожу что-то полезное

Andrew
23.09.2018
09:45:56
Да. Сейчас пытаюсь через scrollToIndex решить, но это костыль. Хотелось бы точно в том месте оставаться
кажется, здесь все-таки придется сверху дописать функционал скролла не к верней границе, а к нижней. держишь в памяти, какое сообщение было полностью на экране последним, после рендера смотришь какой у него offset, прибавляешь outerHiehgt и делаешь scrollTo.

Andrew
23.09.2018
09:46:07
ну т.е. если библиотека этого не позволяет — расширь ее.

Vitaly
23.09.2018
09:54:17
Ну кстати, если скролл ту индекс бросает элемент к низу, то в теории ручками дописать скролл ту на высоту экрана, но в любом случае, по идее, ручками себя придется отскроливать

Andrew
23.09.2018
09:57:07
После рендера этого сообщения уже нет в доме
Тогда куда ты собрался скроллить и почему

Duego
23.09.2018
10:03:24
Тогда куда ты собрался скроллить и почему
К тому месту, где юзер остановился

Andrew
23.09.2018
10:03:44
Ну так если говоришь больше того места нет, то это куда?

И почему последнее видимое сообщение пропадает? Что за странная логика

Duego
23.09.2018
10:04:43
Ну так если говоришь больше того места нет, то это куда?
Принцип работы виртуал скролла - в доме находится столько элементов, сколько в данный момент влезает в видимую часть контейнера, остальные находятся в памяти

Google
Andrew
23.09.2018
10:05:14
Ох ешки

Ну тогда без меня

Может просто при подгрузке новых класть их в память, а не рисовать?

Тогда и обратно не надо будет скроллить

Admin
ERROR: S client not available

Hrant
23.09.2018
10:57:28


Artem
23.09.2018
11:03:26
в твоем коде не происходит абсолютно ничего)

khades
23.09.2018
11:04:24
не, просиходит, но результат никуда не сохраняется

Hrant
23.09.2018
11:05:14
ребят я смотрю туториал и у меня вопрос я не помнимаю [type] что он делает этим и я смотрю он стайт меняет не имутабельно

khades
23.09.2018
11:06:08
стейт ту вобще не меняется

Kos
23.09.2018
11:06:10
стейт вообще не менятся

Vladimir
23.09.2018
11:06:41
Всем привет. Делаю довольно простой список, идея такая Главный компонент с функцией получения данных с сервера ассинхронно. И две функции под отправку изменений на сервер. Дочерний компонент тупой и просто отборажает данные пришедшие с сервера, вызывает те самые функции родителя по изменению данных, но из за ассихнонки, не всегда перерисовывается. Как мне его заставить ожидать новых данных а только потом перерисовывать тут уже DidMount не работает.



khades
23.09.2018
11:08:32
потому что список VM у тебя получается до отработки startVM

или нет

Vladimir
23.09.2018
11:10:09
Ну на самом деле список получаю первый раз в componentDidMount а как на изменение правильно это сделать хз

khades
23.09.2018
11:11:02
ну по идее если у тебя после окончания создания элемента не возращается чего либо с сервера - никак

кроме вебсокета какогонить

Google
khades
23.09.2018
11:11:20
чтоб там уже были сообщения о создании элемента

Vladimir
23.09.2018
11:12:59
ответ то в любом случае приходит, что "wm started"

Duego
23.09.2018
11:13:12
6 строк кода, чтоб проинкрементить число

khades
23.09.2018
11:13:26
и стейт не обновить

ответ то в любом случае приходит, что "wm started"
а "экшны" эти тоже асинхронные?

если да, и там промис - переполучение данных в .then

Vladimir
23.09.2018
11:19:35


khades
23.09.2018
11:19:54
ну получается что у тебя создание виртулаки идёт ПАРАЛЕЛЬНО с запросом инфы с сервера

так что stopVM(somethingsomething).then(()=> this.getVmList)

тогда будет гарантироваться что получение списка будет строго после запроса на создание и остановку

Vladimir
23.09.2018
11:21:00
аааааааа все понял

точно же)

спасибо)

khades
23.09.2018
11:22:18
@WeslyG только зачем оборачивать аксиос в промис если он и так сам промис?

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