
Konstantin
25.01.2018
12:24:31
подходящий чат

Anton
25.01.2018
12:40:31
Приятного дня.
Я столкнулся со странной хренью.
У меня в зависимостях есть new relic. при попытке сборки я получаю
ERROR in ./node_modules/@newrelic/native-metrics/lib/pre-build.js
Module not found: Error: Can't resolve 'aws-sdk' in …
Ставить левый пакет как зависимость прямую приложения как то неправильно, хотя и поможет.

andretshurotshka?❄️кде
25.01.2018
12:42:06
aws-sdk у него есть в зависимостях?

Anton
25.01.2018
12:48:38

Google

andretshurotshka?❄️кде
25.01.2018
12:48:57
удали package-lock.json
и поставь заново все зависимости, если не сработает хз

Anton
25.01.2018
12:49:35
сейчас попробую

Dima
25.01.2018
12:57:09
Бля, пацаны, я уже всё. Давно я так не горел. Поставлю свечку за любые рабочие идеи.
Есть контейнер, в нём 3 формы. Нужно по клику на кнопку в контейнере собрать данные из вложенных форм и отправить их.
Проблема в том, что значения полей лежат исключительно во внутреннем стейте формика и внутри каждой формы. Как поднять их наверх идей уже не осталось.
Что уже попробовал и не подошло:
- пытаться вызвать метод получения данных через ref (не подходит, потому что нету доступа к values)
- сохранять значения форм в контейнере (не подходит, потому что формы большие с вложенными объектами и т.д.)
- не делить форму на компоненты, а пихать плоско в контейнере (тоже самое, что и предыдущий вариант)
Демо в песочнице: https://codesandbox.io/s/72v81o2oj (пример синтетический, но проблема та же)

Andrey
25.01.2018
12:58:22
Формик не выдаёт данные наружу?

Dima
25.01.2018
12:59:14

andretshurotshka?❄️кде
25.01.2018
12:59:28
в onSubmit выдает же
а, тут одна кнопка

Dima
25.01.2018
12:59:58
Именно ?
На 3 формы.

Xeniya
25.01.2018
13:00:34

Вячеслав
25.01.2018
13:00:41
забирать данные при handleChange?

Google

Вячеслав
25.01.2018
13:00:49

Dima
25.01.2018
13:01:23

Anton
25.01.2018
13:01:24
Dima а тут нет общих сторов в которых могли бы мапится состояния форм?
+ а тебе обязательно три элемента формы?
может быть обертки формы 1 2 и 3 сделать div, а папу — формой?
тогда одна кнопка сабмита даст тебе все данные по соответствующему событию

Вячеслав
25.01.2018
13:01:45
Это же ты сам придумал сделать 3 формы, но чтобы они работали как-будто одна

Dima
25.01.2018
13:02:33

Anton
25.01.2018
13:03:06


kana
25.01.2018
13:03:07
Бля, пацаны, я уже всё. Давно я так не горел. Поставлю свечку за любые рабочие идеи.
Есть контейнер, в нём 3 формы. Нужно по клику на кнопку в контейнере собрать данные из вложенных форм и отправить их.
Проблема в том, что значения полей лежат исключительно во внутреннем стейте формика и внутри каждой формы. Как поднять их наверх идей уже не осталось.
Что уже попробовал и не подошло:
- пытаться вызвать метод получения данных через ref (не подходит, потому что нету доступа к values)
- сохранять значения форм в контейнере (не подходит, потому что формы большие с вложенными объектами и т.д.)
- не делить форму на компоненты, а пихать плоско в контейнере (тоже самое, что и предыдущий вариант)
Демо в песочнице: https://codesandbox.io/s/72v81o2oj (пример синтетический, но проблема та же)
что-то очень странное, решение же примитивное
и его уже выше сказали
сделать родителя - компонентом формика
форма это по сути то, что мы сабмитаем. Тут форма - это все три группы инпутов


Dima
25.01.2018
13:06:18

kana
25.01.2018
13:08:42
<input
name="root.sub.name"
/* остальное по дефолту */
/>
именно такой подход нам пропогандирует формик, отлично скейлится на любую вложенность, про какой setValues ты говоришь?
values подразумевается как плоский объект

Dima
25.01.2018
13:10:35

kana
25.01.2018
13:11:09
к сожалению, формик не абстрагирует это

Dima
25.01.2018
13:12:17
Может заодно подкинете топовую либу для этого, чтобы ручной хелпер не писать?

andretshurotshka?❄️кде
25.01.2018
13:15:03
https://github.com/jaredpalmer/formik/pull/207 а эт что

Dima
25.01.2018
13:16:57

Google

kana
25.01.2018
13:17:11
о, это что-то новое, типа он теперь может сам пути парсить
ну да, merged ;t)

Dima
25.01.2018
13:18:24
Пробежал доку, ни одного упоминания, что так можно, а всё выглядит именно так.
Но тут я вспомнил, что пытался так делать и оно сеттило не обхъектом, а строкой foo.bar.


Anton
25.01.2018
13:25:22
вопрос на засыпку:
у меня есть
1. приложение использующее api, которое общается с микросервисами
2. апи, которое общается с микросервисами и наследуется от базового класса, в котором метод который реализует сами запросы
3. базовый класс, который реализует запросы
приложение изоморфное
в базовом класса (3) я решил добавить кеширование с использованием мемкеша
я поставил пакет https://www.npmjs.com/package/memcached
при сборке клиентского бандла всё умирает.
конкретнее мотивирует
ERROR in ./node_modules/memcached/lib/memcached.js
Module not found: Error: Can't resolve 'net'
ERROR in ./node_modules/memcached/lib/memcached.js
Module not found: Error: Can't resolve 'net'
Я попробовал использовать условное подключение, но что то ничего не изменилось.
Я не туда копаю или накосячил?
this.cache =
process &&
process.env &&
process.env.TM_CACHE_CONFIG &&
Object.key(process.env.TM_CACHE_CONFIG).length > 0;
if (this.cache === true) {
const Memcached = require('memcached'); // eslint-disable-line
const uri = process.env.TM_CACHE_SERVER || '127.0.0.1:11211';
this.memcached = new Memcached(uri);
}


Dima
25.01.2018
13:28:40
Если кому интересно.
Сеттеры вложенных объектов доступны только в 0.9.4. Вынесено в отдельный пакет https://www.npmjs.com/package/formik-nested) и похоже больше не обновляется. В основной ветке этого таки нету.

kana
25.01.2018
13:30:23
в любом случае, сделать такое через set лодаша легко

Dima
25.01.2018
13:36:43
Красиво. Спасибо.

kana
25.01.2018
13:39:04
там плохой пример, set же мутабельный
нужно или брать set из lodash/fp, если он там есть, или на for-of переписать

Cenator
25.01.2018
13:39:43
а в рамде есть?

kana
25.01.2018
13:40:08
нет, НО: в lodash есть метод toPath, а в рамде есть assocPath, можно комбинировать)

Сергей
25.01.2018
13:40:27
давай без столбиков

Stepan
25.01.2018
13:44:21

Anton
25.01.2018
13:45:37
или сначала копировать объект и потом уже можно мутировать

kana
25.01.2018
13:46:23

Cenator
25.01.2018
13:46:42
хотя легко можно обойтись без них

Anton
25.01.2018
13:47:04
так одноуровнеый же будет обжект

Stepan
25.01.2018
13:47:57

Google

Admin
ERROR: S client not available

murove1
25.01.2018
13:48:44
Подскажите плиз
Через пропсы передаю 2 свойства в другой компонент, другой компонент должен в инпутах показывает свойства з пропса, а если я изменяю интуп то менять стейт.
можно сделать так или по другому нужно?
this.state = {
title: this.props.title,
text: this.props.text
};
а потом когда в инпуте изменяю тогда вешать на инпут onChange и там setState.

kana
25.01.2018
13:51:44
лучше так не делать, почему бы просто при изменении текста в инпутах не отправлять новый текст наверх, туда откуда text/title в пропсы кладутся
а если уж прямо такое очень-очень нужно (был у меня один такой кейс), то я называю пропс defaultText например и он используется для установки стейта в конструкторе, но этого лучше избегать по максимуму

Timur
25.01.2018
13:52:46
Ну или в конструкторе можно

murove1
25.01.2018
13:54:02

kana
25.01.2018
13:56:06
а почему лучше не делать можеш сказать? мне интересно просто.
- сложно, много бойлерплейтного кода писать, если обновлять, непредсказуемое поведение
- добавляет стейт, который тут вообще не нужен, ведь все уже есть в пропсах
- дублирование стейта в двух местах (еще и в пропсах, в трех местах)
- компоненты должны быть максимально чистыми в том плане, что изменение пропсов не должно игнорироваться, тут же изменение defaultText будет игнорироваться

Dmitry
25.01.2018
13:56:10
дублирование в стейт пропсов которые приходят сверху - антипаттерн в реакте

Timur
25.01.2018
13:57:48

murove1
25.01.2018
13:58:20

Timur
25.01.2018
13:58:55

Stepan
25.01.2018
13:59:18
Прямо в доке написано, что так делать лучше не нужно

Dmitry
25.01.2018
13:59:19
короче стейт где порожден - там и умирает (не всплывает наверх), он не дублируется etc

Timur
25.01.2018
14:00:45

Dmitry
25.01.2018
14:00:52

Timur
25.01.2018
14:02:00

Dmitry
25.01.2018
14:02:36

Google

Timur
25.01.2018
14:04:31

Dmitry
25.01.2018
14:04:47
и тут начинается - ну мы просто пробросим handler в action, а там…
и код превращается в очередной монолит со смешанными слоями итд
компоненты не реиспользуемые, редюсеры тем более

Timur
25.01.2018
14:04:56

Dmitry
25.01.2018
14:06:24

Timur
25.01.2018
14:06:24
Если, конечно, их не пару штук всего

Andrey
25.01.2018
14:06:39

Timur
25.01.2018
14:06:52