
Max
14.12.2017
10:17:33
думаю форвард оттуда ?
у меня руки еще не дошли до поднятия сервера

Павел
14.12.2017
10:17:56
jest как-то связан с реактом)

Max
14.12.2017
10:19:16

Google

Default
14.12.2017
10:19:23
ЛОЛ

Max
14.12.2017
10:19:23
beforeAll не подойдет?
это правда не решит твою проблему с множеством тестов

Павел
14.12.2017
10:21:40
beforeAll не подойдет?
перед каждым тестом мокаю http клиент, чтобы отдавал нужный мне ответ от сервера, для каждого теста свой получается

Max
14.12.2017
10:21:47
гм
стоп
а почему ты axios/fetch не мокаешь?
зачем сервер если ты его один хер замокал? ?

Павел
14.12.2017
10:22:40
я мокаю, только другой клиент - http-rest-client

Max
14.12.2017
10:22:53
паш, а сервер то зачем?

Павел
14.12.2017
10:23:48

Max
14.12.2017
10:24:01
ну

Павел
14.12.2017
10:24:02
типа гейт для микросервисов

Google

Max
14.12.2017
10:24:15
я не очень понимаю - у тебя интеграционные тесты щас или нет?

Павел
14.12.2017
10:24:24
а вот апи микросервисов я мокаю

Max
14.12.2017
10:24:25
если интеграционные то зачем мокать сервер
а
в смысле бекенд дергает дальше микросервисы
понял

Павел
14.12.2017
10:25:41
в тестах проверяю, что нужные апи вызвались с нужными параметрами и в нужном порядке
если еще подскажешь, как эту задачу решить лучше, то буду очень благодарен)

Max
14.12.2017
10:27:40
хз ?
поставь дебаггер после close
и проверь что порт закрыт
у меня щас примерная проблема — я из spawn вызываю yarn start, но он иногда не завершается
буду решать на выходных

Dan
14.12.2017
10:42:31
В чем разница?
constructor(props) {
super(props)
this.state = { x:0, y:0 }
}
state = { x:0, y:0 }
это типа class instance field?

Cenator
14.12.2017
10:43:33
то есть он транспилится в конструктор

SilencerWeb
14.12.2017
10:51:02
Как лучше работать с инпутами? Хранить все значения в стейте, записывать туда же при изменении и потом эти значения использовать в валидации, при сабмите и т.п. или есть варианты получше?

Max
14.12.2017
10:51:50

Cenator
14.12.2017
10:51:52

Google

Cenator
14.12.2017
10:52:04

Max
14.12.2017
10:52:13
всегда будет контекст меняться

Cenator
14.12.2017
10:52:51
не понял

Max
14.12.2017
10:53:17
class A {
state = {
word: this.x
}
constuctor(x) { this.x = x }
}
console.log(new A(‘hui’).state.word)
угадай что выведет

SilencerWeb
14.12.2017
10:54:00
а как лучше хранить все инпуты? В объекте или массиве? Щас я храню их в массиве, каждому инпуту приходится задавать уникальный name чтобы при изменении инпута найти нужный и записать в стейт

Max
14.12.2017
10:54:09
ну и храни так

SilencerWeb
14.12.2017
10:54:29
т.е. это норм?

Max
14.12.2017
10:54:33
а как еще? ?
стоп
откуда у тебя там массив? ?

SilencerWeb
14.12.2017
10:54:48
это я хотел и у вас узнать)

Max
14.12.2017
10:55:24
сеня, отвечай на мой вопрос!

SilencerWeb
14.12.2017
10:55:27
ну у меня изначально в стейт задан массив полей, значение которых в объектах храню

Max
14.12.2017
10:56:00
у тебя форма динамическая?

Daniel
14.12.2017
10:56:04
Попробуй просто как в доке делать, у меня прокатывает

SilencerWeb
14.12.2017
10:56:07
state = {
fields: [
{
name: 'name',
type: 'text',
placeholder: 'Name',
required: true
},
{
name: 'phone',
type: 'tel',
placeholder: 'Phone number',
required: true
}
]
};
как-то так

Cenator
14.12.2017
10:56:26

Max
14.12.2017
10:56:32
угадал

Google

SilencerWeb
14.12.2017
10:57:03

Max
14.12.2017
10:57:10
тогда не надо никакого массива
правильно говорят доку глянь — там есть пример с формами и онченжем

SilencerWeb
14.12.2017
10:57:34
чекал уже

Admin
ERROR: S client not available

SilencerWeb
14.12.2017
10:58:13
так разве не лучше? указал все нужные параметры полей в массиве, запихнул пробежался мапом и получил готовую форму

Max
14.12.2017
10:58:34
нет
если в двух словах

Artyom
14.12.2017
11:02:47
Ша раскажу как очень просто работать с простыми полями.
Оборачиваешь кучу полей c id'шниками по имени полю в <form onChange={this.handleChange}...
А в handleChange делаешь this.values[e.target.id] = e.target.value. И уже при сабмите (блюре) делаешь валидацию this.values. Максимальная простота и производительность

Павел
14.12.2017
11:03:48
и проверь что порт закрыт
попробовал вместо
afterEach((done) => {
server.close(done);
});
вот так обернуть и кажется сработало. выглядит как магия
afterEach((done) => {
server.close(() => {
console.log( "Closed out remaining connections.");
done();
});
});

Voskresus
14.12.2017
11:08:19
у навального в видосе была иконка реакта

Vladimir
14.12.2017
11:08:53
Пруфы?)

Dan
14.12.2017
11:09:57

ed
14.12.2017
11:10:13
Друзья, вчера вышло обновление на hight Sierra, у многих все хорошо, а у меня осталось рабочим только это (просто предупреждаю :))

Rion
14.12.2017
11:10:35
господа ребята, может кто подсказать как делаются маски (для номера телефона, например) или где про это можно прочитать?
везде натыкаются только на жуквери и либы готовые

Dan
14.12.2017
11:12:06

Artyom
14.12.2017
11:12:32
Ну код либ и читай

dima
14.12.2017
11:17:57
styled-components с ref не дружит. Что делать в таком случае ? Как вешать евенты ?

Google

Azein
14.12.2017
11:18:44

Artyom
14.12.2017
11:18:46
Во первых innerRef, все дружит

dima
14.12.2017
11:19:00

Azein
14.12.2017
11:19:08
товарищ сверху кинул уже ключевое слово

Voskresus
14.12.2017
11:38:42

Roman
14.12.2017
11:39:08
Подскажите по реакт-роуту v3.
Как сделать такой путь /first/second/third?
то у меня выводит /first/second/first/second/third
<Link to="first/second/third">

Sergey
14.12.2017
11:39:57
<Link to="/third"> а нет так ли нужно?

Roman
14.12.2017
11:40:27
<Route path="third"
обернут вот так
<Route path="first" >
<Route path="second" >
<Route path="third" />
<Route />
<Route />

Женя
14.12.2017
11:43:34
<Link to=“/first/second/third"> не?

Roman
14.12.2017
11:43:55

Женя
14.12.2017
11:44:17
У тебя там релятивный путь в Линке

Artyom
14.12.2017
11:44:40
Вот вам пример простой и быстрой (по производительности и количеству кода) формы
https://codesandbox.io/s/z35vxoyql

Roman
14.12.2017
11:44:44
такая фигня у двух компонентов