@react_js

Страница 3724 из 5115
Nikita
19.04.2018
11:24:41
Не про стандартный dispatch

Дмитрий
19.04.2018
11:24:44
Ну у него тип ∀ a. a → a как правило, так что промис он тоже вернет если человек его передал

Сергей
19.04.2018
11:24:54
Ну я про thunk говорю
там возвращает, то, что вернешь из санка

Vadim
19.04.2018
11:27:56
Диспач промис возвращает, тоесть ты можешь после послать запрос в API
а зачем возвращать промис, если можно в then сделать нужный dispatch?

Google
Alexey
19.04.2018
11:28:00
Форма сама ж за свой стейт отвечает, нафига в него лезть?

Дмитрий
19.04.2018
11:28:12
Кмк dispatch должен возвращать void, чтобы не париться ещё и о том, что же там из него вернётся)

Сергей
19.04.2018
11:28:14
Nikita
19.04.2018
11:28:26
там возвращает, то, что вернешь из санка
Да точно, ты был прав. Давно redux не юзал

Vadim
19.04.2018
11:28:39
затем, чтобы разделять логику
а где тут разделение?

Дмитрий
19.04.2018
11:29:03
Вообще void

Сергей
19.04.2018
11:29:08
а где тут разделение?
если тебе не надо внутри санка делать ещё один диспатч во всех случаях использования экшена

Дмитрий
19.04.2018
11:29:31
У меня вечно огромные проблемы из-за того, что диспатч что-то возвращает но ещё ни разу после отказа от санков я реально этим даже не пользовался

Санкохук какой-то

Если в коннект передавать объект с экшнами вторым аргументом, то сам диспатч толком даже в глаза не видишь, что-то там под капотом оборачивается и ладно

Сергей
19.04.2018
11:32:45
Google
Дмитрий
19.04.2018
11:34:32
главное типы не забыть прокинуть, чтобы не узнавать об опечатках в имени экшена в рантайме
import {foo, bar} from './action' class _ extends React.Component<{ foo: typeof foo, bar: typeof bar, }>{} export default connect(null, {foo, bar})(_)

Криво конечно

Но как это получше автоматизировать я хз

Gleb
19.04.2018
11:36:26
Тогда у тебя в тестах будет нужно обязательно передать typeof foo, но удобнее иметь возможность передавать () => void

Сергей
19.04.2018
11:36:29
Den
19.04.2018
11:36:40
тут не принято на нубские вопросы отвечать?

Кто как переводит form validator errors?

Дмитрий
19.04.2018
11:38:20
Зачем

У тебя готовый компонент

Какой смысл типизировать компонент экшнами и потом позволять обнулить их наглухо?)

Gleb
19.04.2018
11:39:44
Ну нет) Я обычно напрямую не передаю в коннект у меня ниже уровнем хэндлеры от рекомпоза

Ну потому что withHandlers мои функции по честному возвращают void а не экшн

Den
19.04.2018
11:40:34
Какие вы умные. Завидно прям.

VLadimir
19.04.2018
11:41:19
Ребята дайте ссылку на материал как сделать такой прелоадер как с недавних пор появаился на youtube и linkedin

Gleb
19.04.2018
11:42:26
Потому что тестировать проще имхо если каждый экшн обернут в хэндлер, тогда и существование ридакса скрыто,что конечно нахер не надо

?
19.04.2018
11:42:48
isFetching ? <Preaload /> : <Comp />

Den
19.04.2018
11:44:42


Дмитрий
19.04.2018
11:46:47
Ну потому что withHandlers мои функции по честному возвращают void а не экшн
Иными словами, ты определяешь ложный тип, а после этого меняешь реальный под соответствие ему

Google
Gleb
19.04.2018
11:47:03
Стоп он не ложный)

?
19.04.2018
11:47:21
Чуваки плиз помогите, Error: only one instance of babel-polyfill is allowed.

Дмитрий
19.04.2018
11:47:27
Ложный конечно же

Gleb
19.04.2018
11:47:35
Я создаю одноименную функцию которая возвращает void, а потом дерагет уже ту что диспатчит

Дмитрий
19.04.2018
11:47:38
При создании экшна создаётся экшн, как ни странно

Дмитрий
19.04.2018
11:47:49
??

Vasily
19.04.2018
11:48:07
Чуваки плиз помогите, Error: only one instance of babel-polyfill is allowed.
Один раз только подключай полифил в корневом компоненте

Дмитрий
19.04.2018
11:48:10
?
19.04.2018
11:48:27
Один раз только подключай полифил в корневом компоненте
так в том и дело что я его один раз подключаю

Дмитрий
19.04.2018
11:48:27
И в том месте из которого импортируется тоже

Дмитрий
19.04.2018
11:48:34
И при использовании его тоже не будет

Сергей
19.04.2018
11:48:38
?
19.04.2018
11:49:24
ну значит не один раз
если я убираю один (единственный) импорт полифила ваще ничо не работает потому что он нужен

Gleb
19.04.2018
11:50:58
Я же говорю ну мне просто приятно знать я абстрагирую ридакс, считай фетиш ? То есть примерно так compose( connect(null, {someAction}), withHandlers({ someAction : ({someAction}) => e => { someAction(e.target.value) } }) ) Ну и по сути це (e) => void И я могу спокойно в тестах отдельно потестить с хоком и отдельно совсем девственный компонент с колбеком и void а не с возвратом экшна

+ тут такой момент что далеко не каждый пользовательский ввод вызовет диспатч, а некоторые нужно из слоя просто Dom евента вытащить вэлью или как то предварительно обработать, скажем календарик у меня возвращает инстанс момента, я например вытащу значения в хэндлере ,а потом уже задиспатчу isostring

Alex
19.04.2018
12:05:26
Но как это получше автоматизировать я хз
Я генерирую для себя три типа, экшены, экшон криэйторы и мап диспатч экшон криэйторы

Google
Alex
19.04.2018
12:09:29
import {foo, bar} from './action' class _ extends React.Component<{ foo: typeof foo, bar: typeof bar, }>{} export default connect(null, {foo, bar})(_)
const actions = { for, bar}; class _ extends React.Component<typeof actions> Как вариант ещё

Artem
19.04.2018
12:11:50
/?pickup_city=:pickup_city&dropoff_city=:dropoff_city кто знает как вопросительный знак экранировать, что бы реакт роутер сработал?

вообщем если начинается с спец.символа отказывается работать, хоть экранирую хоть нет)

Valeriy
19.04.2018
12:13:32
хочешь заматчить путь с параметрами?

Artem
19.04.2018
12:13:48
а ты что пытаешься сделать то ?
мне урл вот такой нужен для реакт роутера

Admin
ERROR: S client not available

Artem
19.04.2018
12:13:54
ага

path="/@pickup_city=:pickup_city&dropoff_city=:dropoff_city"

так к примеру работает

Valeriy
19.04.2018
12:14:20
отслеживай путь на уровне роутов, а параметры внутри ({ match }) => match.params

Artem
19.04.2018
12:14:21
но мне вопросительный нужен вместо собаки

Valeriy
19.04.2018
12:14:40
поверь, не нужны тебе спецсимволы в пути :)

Artem
19.04.2018
12:14:57
поверь, не нужны тебе спецсимволы в пути :)
я согласен, но не моя прихоть)

Anton
19.04.2018
12:29:33
https://twitter.com/jamiebuilds/status/986699602362429440?s=20 Клевый каминг аут. Признавайтесь кто все еще использует его проекты?

Дмитрий
19.04.2018
12:31:34
const actions = { for, bar}; class _ extends React.Component<typeof actions> Как вариант ещё
Лол, а ты хитрый ? Да, это сокращенный вариант моей записи, проблема в том, что самих пропсов побольше и получается уже некрасиво и не очевидно

Anton
19.04.2018
12:35:52
А есть у кого на примете «что-то» для экстракта propTypes из TS? Нужны пропсы в явном виде :(

Alex
19.04.2018
12:35:56
Я ещё маплю экшены в { actions: {... }}, чтобы избегать конфликтов с пропами, а так одина хелпер функция создаёт все что нужно для компонента

Anton
19.04.2018
12:36:22
Лол, это же James "javascript fatigue" Kyle, ты что хотел)
Я у него давно в блок листе ;) знаком

Google
Дмитрий
19.04.2018
12:36:32
Ахах ?

Alex
19.04.2018
12:37:22
Я делаю чтоб были обернуты

Дмитрий
19.04.2018
12:37:31
Аа

Владимир
19.04.2018
12:38:17
Я делаю чтоб были обернуты
через bindActionCreators? тогда ИДЕ их теряет и не может прыгнуть на определение

Alex
19.04.2018
12:38:52
Да через бинд, но с определением все в порядке

Дмитрий
19.04.2018
12:39:48
Я понял, ИДЕ это сокращенно от IDEA

Владимир
19.04.2018
12:40:12
Да через бинд, но с определением все в порядке
у меня вебшторм не может показать правильно usage и сделать jump to, если экшен пропущен через bind. Возможно я неправильно его варил

Alex
19.04.2018
12:40:48
У меня разные типы у того что в коннект и того что в пропах компонента

Владимир
19.04.2018
12:41:25
А тип в компонент откуда передаешь?
у меня не тайпскрипт, типы описаны только в proptypes

Дмитрий
19.04.2018
12:42:03
проблемно

Alex
19.04.2018
12:42:20
Вот это фигово кстати
Нет, когда у них один источник

Одна функция создаёт из одного объекта и тот и другой тип, компоненту не обязательно знать что экшон обернут во что-то

Дмитрий
19.04.2018
12:43:24
При оборачивании в диспатч тип не меняется никак вообще

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