
Vladimir
03.08.2016
12:30:36
в смысле одно дело написать компонент под широкий спектр задач и совсем другое - под конкретную задачу в твоей жире

Nikolay
03.08.2016
12:34:44
у меня очередной вопрос. есть компонент с вложенными компонентами (массив массивов). все это в одном редьюсере через комбайн. при изменении любого свойства перерисовывается все вместе. раньше вроде не перерисовывалось. как понять, почему весь компонент перерисовывается?

Dmitry
03.08.2016
12:57:12
Может у родителя в коннекте каждый раз что-то меняется в стейте?

Nikolay
03.08.2016
12:57:57
ну у родителя меняется, так как он же содержит в себе все дочерние

Google

Nikolay
03.08.2016
12:58:05
больше он ничего не содержит
вот я логически не могу понять, как должно быть
у нас же всегда родитель меняется

Алексей
03.08.2016
13:02:55

Nikolay
03.08.2016
13:03:26
да, создаю заново. а как не создавать в редаксе?
но я в него проставляю те же объекты, если они не поменялись. вроде как так по идеолоогии и есть. пока сделаю через мидлварю, а там мож что надумается

Vitaly
03.08.2016
13:29:46
самое простое - в map key не index, а какой-то уникальный ключ объекта

Nikolay
03.08.2016
13:35:13
спасибо, ща проверю
ночью на одном из своих впс оставил включенным прокси без пароля. сегодня уже абуза от сони пришла за частые обращения. 1,5ляма запросов набежало. как быстро прокси становятся народным достоянием)

Cocker
03.08.2016
13:40:04

Nikita
03.08.2016
13:40:25
https://github.com/JedWatson/react-select/issues/612
юзабилити 0

Alexey
03.08.2016
13:41:35

Google

Nikita
03.08.2016
13:41:38
ну мое имхо такое - лучше сделать маааленький компонент, который будет покрывать маааленькую задачу, но хорошо. Чем на все случаи жизни и плохо)

Aleh
03.08.2016
13:42:11

Alexey
03.08.2016
13:42:24
я не об этом, а про сам сценарий. зачем копировать текст в селекте?

Nikita
03.08.2016
13:42:31
я как-то раз сломал кнопу send у чатика. Пользователь написал - аааа, как мне отправлять сообщения) Про enter он не знает)

Alex
03.08.2016
13:42:41

Nikita
03.08.2016
13:42:41

Alexey
03.08.2016
13:43:04
а
ну вообще поддержка clipboard’а на уровне js работает в ограниченных браузерах
Но я понял тебя.

Nikita
03.08.2016
13:44:27
она работает в инпуте, а компонент ломает инпут. В этом смысл issue

Cocker
03.08.2016
13:45:15

Nikita
03.08.2016
13:45:25
решить проблему, кстати, можно перейдя на флексбоксы и выкинув react-input-autosize или как там

Nikolay
03.08.2016
13:46:17

Alex
03.08.2016
13:47:56
hetzner)
У популярных провайдеров сканируют постоянно их диапазоны на разные сервисы
а есть же еще штуки вроде shodan

Владимир
03.08.2016
14:02:36

Nikolay
03.08.2016
14:03:23

Cocker
03.08.2016
14:05:04
юзабилити 0
Но вообще одного юзкейса маловато, чтобы сказать, что юзабилити - 0. Есть там что-то еще?

Nikita
03.08.2016
14:08:15

Google

Cocker
03.08.2016
14:11:43

Slava
03.08.2016
14:28:58
Hi2all
Пара нубских вопросов про React. Буду благодарен если ответите:
1. Использую React+Redux. Стоит ли добавлять в стор все состояния? К примеру, есть компонент состоящий из навбара и кнопки его скрывающей/показывающей. Стоит ли состояние навбара(скрыт-нет) хранить в сторе? Или норм просто в стейте компонента?
2. Стоит ли все экшены прогонять через редьюсер? К примеру, есть список элементов, хранится в сторе. Хочу по нажатию кнопки его сортировать. Стоит ли прогонять сортировку в редьюсере или норм его отсортировать прям в компоненте?

Dmitry
03.08.2016
14:32:53
Имхо в сторе стоит хранить все, что связано с данными + те ui состояния, которые могут пригодиться для рендеринга нескольких компонент

Алексей
03.08.2016
14:33:38


Stepan
03.08.2016
14:40:52
По-моему, ответ "да" на оба вопроса. И не играет роль, насколько оно существенно для бизнес логики.

Dmitry
03.08.2016
14:44:16
Ну скажем у меня есть компонент, где я в локальном стейте держу положение скролла внутри него и по этому значению вешаю классы на элементы. Класть это дело в стор кажется избыточным.

Slava
03.08.2016
14:46:39
Мне в теории кажется стор только для внешних данных приложения нужно использовать. Все остальное решать внутри компонента + в случаях если требуется между разными компонентами взаимодействовать (и то это можно решить упаковкой в общего родителя). Писать все в стор - это уйма редьюсеров и экшенов, которые по сути лишние сущности.

Алексей
03.08.2016
14:47:17

Slava
03.08.2016
14:52:23
Мне в соседнем треде пару видео подсказали. Посмотрю, может яснее станет =)

Tony
03.08.2016
14:52:32
можно удобно взять react-redux-form и использовать его modeled reducers
правда получится не совсем традиционный редакс

Slava
03.08.2016
14:55:11
Есть еще прикладной вопрос - как сделать спиннер который показывать при *всех* запросах к api? (использую axious если важно)

Slava
03.08.2016
14:56:41

Nikolay
03.08.2016
14:57:58
а я все в сторах держу)

from
03.08.2016
14:59:16

Nikolay
03.08.2016
15:00:16
пока решил задачу мутным способом. у меня просто после рендера компонента вызывается рендер графика сторонней библиотекой (в componentDidUpdate). В итоге вкомпоненте сделал кэш значений, и если не поменялось, то не перерисовываю график. не очень красиво, зато работает

Vladimir
03.08.2016
15:01:19
Всем привет! Переежал сюда из скайп группы, говорят тут поживее )

Slava
03.08.2016
15:02:18

from
03.08.2016
15:02:52

Slava
03.08.2016
15:02:58
Но это как то много писать, или я какой-то момент с экшнами пропустил?

Google

Ilya
03.08.2016
15:04:30
У тебя экшены как уходят?

Nikolay
03.08.2016
15:05:33
мидваре поможет с спиннером)

Vladimir
03.08.2016
15:06:07
@nektodev Как вариант, можно сделать врапер для axios в котором перед выполнением запроса и на then/fail будет диспатчится экшин, котоырй слушается стором fetch, это если не через мидваре ходят запросы к апи

Slava
03.08.2016
15:08:50
У тебя экшены как уходят?
в компоненте:
api.getSmth()
в api:
export function getSmth() {
axios.get('host/api/smth')
.then(response => {
var smthAction = getSmthSuccessAction(response.data);
store.dispatch(smthAction);
return smthAction;
});
}

Ilya
03.08.2016
15:09:54
Ну я не знаю, можешь попробовать собирать в стейт статусы всех запросов, тупо true / false, потом убирать кружавчик, если true нет больше.
Middleware это прослойка между экшенами и редюсерами, емнип.

Admin
ERROR: S client not available

Ilya
03.08.2016
15:10:21
Если конкретно к редаксу применять.
Поправьте, если что.

Nikolay
03.08.2016
15:11:30
ну, первое, что приходит в голову - добавлять в экшн еще один атрибут - spinner=true/false и обрабатывать редьюсером спиннера
это если совсем быстро

Ilya
03.08.2016
15:11:48
А зачем заранее пихать?
Если есть класы экшенов STARTED, SUCCESS и FALSE, то можно тупо юзать их как флаги.
started - spinner = true,
success / fail - spinner = false

Slava
03.08.2016
15:12:32

Ilya
03.08.2016
15:13:07
Мы например на проекте перед запросом к апи отсылаем %Request_kind%_started
_перед_
Показываем так локально спинеры на каждый ресурс.

Google

Ilya
03.08.2016
15:13:42
Не трудно будет сделать редюсер который будет просто матчить экшены по маске.
И тогглить.

Slava
03.08.2016
15:13:48
Ага, понял идею. Но тут тогда все вызовы надо обернуть чтобы перед ними вызвался экшен STARTED

Ilya
03.08.2016
15:14:19
Достаточно в getSmth перед вызовом axios сделать dispatch
Или подключить что-то вроде thunk-а.

Slava
03.08.2016
15:14:45
Печально =( У меня под сотню обращений к api =(

Ilya
03.08.2016
15:15:43
https://gist.github.com/Deiru2k/a734b89bbc621cf1308d37437369d0e2 У нас вот так выглядят экшены.
Бойлерплейт, правда, бгг.
Но мы вроде уходим от него.

Slava
03.08.2016
15:18:46
Забавно. Нь мнер больше идея с враппером на axious понравилась. описать враппер который сам такие ивенты генерит (на основании URI и параметров) и пройтись search-and-replace axious на axiousWrapper

Ilya
03.08.2016
15:19:01
Ну можешь и так сделать!
Суть одна - чтобы _перед_ запросом уходил экшен о намерении запроса.

Slava
03.08.2016
15:19:48
Да, спасибо!

Andrey
03.08.2016
15:52:22
http://prgssr.ru/development/komponenty-vysshego-poryadka.html
ребзь. вот скажите мне. кто нибудь вообще юзает эти самые функции высшего порядка в проде ?
Неужели у нас итак проблем мало?
у нас же итак обёртка в обёртке обёрткой погоняет и саги сбоку. :)
на каждый чих по два компонента. презентационный и контейнер. Так ещё вон предлагают чтобы функция высерала функцию, и преподносят это так, будто бы это ваще киллер-фитча

Andrey
03.08.2016
15:57:03
шта? какие проблемы могут появится? они наоборот только решают большое количество проблем

Grigory
03.08.2016
16:02:00
Кто-нибудь делал последовательный рендер элементов списка? То есть не ждать, пока все зарендеряться, а по одному?

Alxander
03.08.2016
16:03:00