
Николай
09.08.2018
09:47:40
Может есть там что интересное, не смотрел еще

Антон
09.08.2018
09:49:42

Stepan
09.08.2018
09:50:50

Mark
09.08.2018
09:58:16
Порекомендуйте что-нибудь по поводу React PWA с возможностью дальнейшей публикации в сторы apple, gplay

Google

Alex
09.08.2018
10:00:52
Можно аргументацию почему нельзя писать var в реакт приложении, ведь все равно это скомпилит бабель. Аргументы типо - это *, так делают только * не принимаются

Николай
09.08.2018
10:01:51

Andrey
09.08.2018
10:02:13

Roman
09.08.2018
10:02:26

Alex
09.08.2018
10:02:34
Область видимости
ну например в рендере написать переменную через вар, ничего не поломается же

Konstantin
09.08.2018
10:02:38
где можно прям нубский вопрос задать
тут можно или наругают?

Николай
09.08.2018
10:02:52

Roman
09.08.2018
10:03:01

Konstantin
09.08.2018
10:04:42
ну по жс только не совсем в тему может быть. вобщем, как мне в (jsdoc например) описать структуру некоего объекта со вложеностью в пару уровней?
есть такие заголовки Link, и хочется иметь статичную структуру (а не то что только в заголовке пришло), заменяя не-полученые значения на пустые строки ( избежать хочется кучи проверок на null/undefined).
вот... и вобщем то, дампить в консоль я уже устал) может как то можно это замутить? на подобие описания классов и свойств, только чтоб попроще как то

Alex
09.08.2018
10:05:52
спасибо
Область видимости
Потому что hoisting - плохая и неочевидная вещь.

Google

Владимир
09.08.2018
10:16:04

Konstantin
09.08.2018
10:19:10

Владимир
09.08.2018
10:20:36
чтоб автокомплит подсказывал можешь jsdoc typedef

Konstantin
09.08.2018
10:21:20

Владимир
09.08.2018
10:22:15

Konstantin
09.08.2018
10:22:42
прикольно, спасибо, то что и хотел

Alex
09.08.2018
10:24:44
Если в приложении в рендер просто пихаются куски вёрстки и нет разбиения на компоненты или еще хуже по 2-3 компонента в одном файле. Ведет ли это к плохой производительности или еще к чему либо ?

Andrew
09.08.2018
10:32:49

Andrey
09.08.2018
10:35:31

Prester John
09.08.2018
10:40:05
Перерисовка же после сравнения деревьев, а там разве будет разница в них?

Eвгений
09.08.2018
10:41:27
Добрый день, пытаюсь прикрутить сокеты к реакту, использую пакет socket.io, вроде стучится на бэк и достает что нужно, но достает старую информацию, а точнее идет запрос, этот запрос попадает в очередь на бэке, и пока он находится в очереди и обрабатывается проходит время, а паралельно с запросом и сокеты стучатся смотрят последние изменения, и не дожидаются выполнения очереди, а забирают последнее значение, и поэтому данные постоянно на один шаг назад, не актуальные

Andrey
09.08.2018
10:41:36

Prester John
09.08.2018
10:44:24

Oleksandr
09.08.2018
10:44:37
Всем привет. Мне надо сделать так что-бы при клике на таб, рендерился нужный объект. Вот как сделал я - https://codesandbox.io/s/o7r0z7o43z
Возможно это можно сделать более красивей или мой вариант сойдет?
Я думал сделать какой-то еще контейнер. В нем делать рендер children. В пропсы кидать индекс таба.

Prester John
09.08.2018
10:44:59
Если не пьюр, то разницы же не будет? Деревья будут те же самые в итоге

Andrey
09.08.2018
10:46:13

Alex
09.08.2018
10:47:28

Andrey
09.08.2018
10:50:42

Evansir
09.08.2018
11:57:28
Подскажите скажите либу или метод для преобразования строки в URL с заменой пробелов на _ и спецсимволов
Типа: Hello Peep's? -> hello_peeps

Google

Roman
09.08.2018
11:58:43
кто-нибудь тут now sh юзает?

Cenator
09.08.2018
11:58:48

Evansir
09.08.2018
11:58:53
Вдруг такая магия уже есть и ее не нужно создавать

Roman
09.08.2018
11:59:35
Да
как-то можно сделать чтобы один и тот же урл был?

М
09.08.2018
12:01:50

Evansir
09.08.2018
12:02:22

Peter
09.08.2018
12:03:12
Всем привет, подскажите пожалуйста. В action creator приходят данные с сервера (использую thunk), эти данные нужно отфильтровать до того как они попадут в стор. Значение фильтра должно браться из стора. Где лучше это делать? В том же экшен креэйтере с помощью отдельной функции? Какие ещё есть варианты?

Cenator
09.08.2018
12:04:05

Peter
09.08.2018
12:07:35
Спасибо, так и думал. А вообще, я правильно понимаю, что как-то изменять данные до пападания в хранилище можно либо в экшенах, либо в мидлварах? Как обычно делают?

Roman
09.08.2018
12:08:19

Cenator
09.08.2018
12:08:23

Roman
09.08.2018
12:08:40

Peter
09.08.2018
12:11:21
А как обычно хранят эти функции, которые изменяют данные в санках? Там же с экшенами или в какой-то отдельной папке типа helpers?


Kevin
09.08.2018
12:37:21
я тут интересный паттерн для себя открыл
в доках не видел, хотя если погуглить, то пару упоминаний на SO можно найти
суть в том, что иногда надо в компонент передать функцию
например, кнопке условный хэндлер onClick
но кнопок несколько, и под каждую создавать отдельную функцию не хочется
можно сделать хэндлер вида handleClick = (arg) => (event) => { ... } и в компоненте его юзать типа <button onClick={this.handleClick(arg)} />
но тогда для каждой кнопки при каждом рендере функция будет создаваться по-новой, и кнопка будет перерендериваться
в доках по реакту описано, что для избежания перерендера можно использовать dataSet типа <button data-arg={arg} onClick={this.handleClick} /> и handleClick = (event) => { const { arg } = event.currentTarget.dataSet; ... }
но это мало того, что многословно, так еще и работает только для тех функций, которые принимают ивенты
другой путь -- юзать мемоизацию
вместо handleClick = (arg) => (event) => { ... } просто написать handleClick = memoize((arg) => (event) => { ... }) (memoize взять, например, из lodash/memoize)
и юзать его так же, как в первом примере
но вместо каждый раз разных функций, возвращаться будут те же самые функции, тем самым, перерендера не будет
норм идея или что-то пойдет не так?


Тимофей
09.08.2018
12:39:44
я тут интересный паттерн для себя открыл
в доках не видел, хотя если погуглить, то пару упоминаний на SO можно найти
суть в том, что иногда надо в компонент передать функцию
например, кнопке условный хэндлер onClick
но кнопок несколько, и под каждую создавать отдельную функцию не хочется
можно сделать хэндлер вида handleClick = (arg) => (event) => { ... } и в компоненте его юзать типа <button onClick={this.handleClick(arg)} />
но тогда для каждой кнопки при каждом рендере функция будет создаваться по-новой, и кнопка будет перерендериваться
в доках по реакту описано, что для избежания перерендера можно использовать dataSet типа <button data-arg={arg} onClick={this.handleClick} /> и handleClick = (event) => { const { arg } = event.currentTarget.dataSet; ... }
но это мало того, что многословно, так еще и работает только для тех функций, которые принимают ивенты
другой путь -- юзать мемоизацию
вместо handleClick = (arg) => (event) => { ... } просто написать handleClick = memoize((arg) => (event) => { ... }) (memoize взять, например, из lodash/memoize)
и юзать его так же, как в первом примере
но вместо каждый раз разных функций, возвращаться будут те же самые функции, тем самым, перерендера не будет
норм идея или что-то пойдет не так?
На мемоизации потеряешь больше времени


Andrey
09.08.2018
12:40:12
я тут интересный паттерн для себя открыл
в доках не видел, хотя если погуглить, то пару упоминаний на SO можно найти
суть в том, что иногда надо в компонент передать функцию
например, кнопке условный хэндлер onClick
но кнопок несколько, и под каждую создавать отдельную функцию не хочется
можно сделать хэндлер вида handleClick = (arg) => (event) => { ... } и в компоненте его юзать типа <button onClick={this.handleClick(arg)} />
но тогда для каждой кнопки при каждом рендере функция будет создаваться по-новой, и кнопка будет перерендериваться
в доках по реакту описано, что для избежания перерендера можно использовать dataSet типа <button data-arg={arg} onClick={this.handleClick} /> и handleClick = (event) => { const { arg } = event.currentTarget.dataSet; ... }
но это мало того, что многословно, так еще и работает только для тех функций, которые принимают ивенты
другой путь -- юзать мемоизацию
вместо handleClick = (arg) => (event) => { ... } просто написать handleClick = memoize((arg) => (event) => { ... }) (memoize взять, например, из lodash/memoize)
и юзать его так же, как в первом примере
но вместо каждый раз разных функций, возвращаться будут те же самые функции, тем самым, перерендера не будет
норм идея или что-то пойдет не так?
Чот ты усложняешь очень. Просто напиши хок и реакт за тебя сам мемоизировать будет.


Mishka
09.08.2018
12:41:05
Всем привет! А есть отдельный чат для react-router ?


Kendr
09.08.2018
12:41:08
я тут интересный паттерн для себя открыл
в доках не видел, хотя если погуглить, то пару упоминаний на SO можно найти
суть в том, что иногда надо в компонент передать функцию
например, кнопке условный хэндлер onClick
но кнопок несколько, и под каждую создавать отдельную функцию не хочется
можно сделать хэндлер вида handleClick = (arg) => (event) => { ... } и в компоненте его юзать типа <button onClick={this.handleClick(arg)} />
но тогда для каждой кнопки при каждом рендере функция будет создаваться по-новой, и кнопка будет перерендериваться
в доках по реакту описано, что для избежания перерендера можно использовать dataSet типа <button data-arg={arg} onClick={this.handleClick} /> и handleClick = (event) => { const { arg } = event.currentTarget.dataSet; ... }
но это мало того, что многословно, так еще и работает только для тех функций, которые принимают ивенты
другой путь -- юзать мемоизацию
вместо handleClick = (arg) => (event) => { ... } просто написать handleClick = memoize((arg) => (event) => { ... }) (memoize взять, например, из lodash/memoize)
и юзать его так же, как в первом примере
но вместо каждый раз разных функций, возвращаться будут те же самые функции, тем самым, перерендера не будет
норм идея или что-то пойдет не так?
Мемоиз лучше не это самое


Kevin
09.08.2018
12:41:37

Google

Kevin
09.08.2018
12:41:54

Kendr
09.08.2018
12:42:21

Andrey
09.08.2018
12:43:10
Всё.
withProps, pure из recompose

Kevin
09.08.2018
12:45:00
хм
ну, тогда компонент выносить придется, если я правильно понимаю

Evansir
09.08.2018
12:48:58

Admin
ERROR: S client not available

Andrey
09.08.2018
13:00:07

Kevin
09.08.2018
13:02:26
Куда выносить?
ну типа если это это готовый (например, взятый из чужой либы) компонент Foo, то прежде, чем его юзать, придется его заранее переобъявить типа MyFoo = compose(withProps(...), pure)(Foo)

Oleksandr
09.08.2018
13:02:47
А не проще написать с замыканием, и все
`handleClick = (event, id) => {
const {value} = event.target
return e => {
this.props.callActionWithId(id, value);
}
}`

Andrey
09.08.2018
13:03:46

Oleksandr
09.08.2018
13:05:45
А что тогда более preferable??
Делать () => this.handleChane(id)
или с замыканием?

Антон
09.08.2018
13:05:47
уважаемые, а как сделать browserhistory.push на 4м реакт роутере?

Andrey
09.08.2018
13:06:18

Mishka
09.08.2018
13:06:33

Alex
09.08.2018
13:06:45
Material-ui юзал кто-нибудь ?

Kevin
09.08.2018
13:06:58
много кто юзал

Oleksandr
09.08.2018
13:06:59
import { withRouter } from "react-router-dom";
this.props.history.push("/some/Path");

Google

Alex
09.08.2018
13:07:19
Добавил такой поле с типом password и в результате
а с типом текст, норм

Artem
09.08.2018
13:08:08
Товарищи, а кто решает проблему, когда у каждой фичи свой редюсер, и между ними надо данные гонять? Сейчас у меня сделано, просто с экшенов фичи вызываю с типом экшена для редюсера из другой фичи, или все таки лучше сделать глобал экшены, которые будет гонять эти данные между фичами?

Sukhrob
09.08.2018
13:09:10
tslint ругается на следующую строку
import React, {Component, ReactNode} from 'react';
Сообщение такое: Module '"***/node_modules/@types/react/index"' has no default export.
правило no-default-export: false для файла tslint.json не работает
что я делаю не так?

Ilya
09.08.2018
13:09:38

Антон
09.08.2018
13:09:44

Oleksandr
09.08.2018
13:10:14

Alex
09.08.2018
13:10:38

Дмитрий
09.08.2018
13:12:30

Artem
09.08.2018
13:13:12

Oleksandr
09.08.2018
13:13:31

Ilya
09.08.2018
13:14:42

Alex
09.08.2018
13:14:57
+1
Что-то еще может скинуть ?

Ilya
09.08.2018
13:26:23
classes.textField

Alex
09.08.2018
13:28:29