
Sanjar
02.12.2016
07:28:04
А, всё.
Решилось.

Vladimir
02.12.2016
07:28:51

Sanjar
02.12.2016
07:29:15
Спасибо за уделенное время, запустил от лица админа, вроде бы работает.
Вечно забываю об этом, хотя простая вещь.

Google

Sanjar
02.12.2016
07:30:02
Надо вообще перейти на Ubuntu, но из-за того, что у меня кабельный инет там настройка превратилась в ад :D

Vladimir
02.12.2016
07:38:32

Aleh
02.12.2016
07:40:38

Den
02.12.2016
07:42:29
Render to string и сравнить строки?
Если с этой стороны смотреть, то из коробки идёт сохранение снапшота в файл, их сравнение, вывод диффа, возможность с помощью одного ключа пересохранить снапшоты.
и всё это вызов одной функции
ещё забыл, автоматическая организация снапшотов (по тесткейсам)

Aleh
02.12.2016
07:43:20

Sanjar
02.12.2016
07:43:34
Кто-нибудь знает, есть ли аналог Extract for Brackets, но для Atom?

Den
02.12.2016
07:44:15

Aleh
02.12.2016
07:44:39
Первый раз зарендерю, а потом буду сравнивать

Den
02.12.2016
07:45:00
а в jest я просто напишу .toMatchSnapshot()
если это первый запуск, он сохранит, в нужном файле, под нужным именем (чтобы не пересекались можественные запуски из разных кейсов)

Google

Den
02.12.2016
07:46:48
мы или про разное говорим, или я что-то не понимаю :)

Aleh
02.12.2016
07:46:52
Но тебе придётся следить за изменением компонента
Правильно?

Den
02.12.2016
07:47:52
конечно, если что-то изменится, я должен убедится, что это ок, а не баг. Но компоненты не меняются часто
Когда я в диффе, который выведет jest, увижу, что всё ок, то запущу тесты c -u, и снапшоты автоматом обновятся

Evjeni
02.12.2016
08:29:31

Vladimir
02.12.2016
08:36:45

Nikita
02.12.2016
08:39:51
это пока rm -rf / под рутом не напишеш на боевом сервере, не приходит

n4nn31355
02.12.2016
08:49:12
Ребзя, а кто-нибудь ковырял todomvc на чистом reactjs? Откуда там Router подключается, что-то никак не пойму

Art
02.12.2016
08:57:35
https://twitter.com/sebmck/status/804408814657224706
Это драма или шуточки?

Sanjar
02.12.2016
09:07:34

Nikita
02.12.2016
09:07:54
root

Evjeni
02.12.2016
09:08:21
Что такое рут?
http://help.ubuntu.ru/wiki/%D1%81%D1%83%D0%BF%D0%B5%D1%80%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_%D0%B2_ubuntu

n4nn31355
02.12.2016
10:19:26

Сергей
02.12.2016
10:23:10
mvc на реакте это плохая затея

Дмитрий
02.12.2016
10:24:51
Если доводить идеи redux до конца, то в итоге именно он и получится))

Alexey
02.12.2016
10:25:22

Nikita
02.12.2016
10:28:26
тем что все что угодно можно к mvc свести)

Nikita
02.12.2016
10:29:15
а вы точно не путаете MVC, MVP и другие MV* ?

Google

Alexander
02.12.2016
10:29:19

Сергей
02.12.2016
10:29:56

Nikita
02.12.2016
10:30:55
редьюсеры - модели, connected компоненты - контроллеры, тупые компоненты - вьюхи.
MVC как из книжки)

Сергей
02.12.2016
10:31:18
на словах всё можно свести)
но по факту эт немного не так

Nikita
02.12.2016
10:31:38
а ты докажи)
определения mvc нет, поэтому и любой спор - ниочем)
также как либа/фреймворк

Стас Щетинников
02.12.2016
10:32:27

Alexey
02.12.2016
10:32:37
а ты все равно его не знаешь

Nikita
02.12.2016
10:32:49
у каждого свое?)

Alexey
02.12.2016
10:32:56
именно

Nikita
02.12.2016
10:33:33
во, прям в доки редакса пихнуть можно)

Стас Щетинников
02.12.2016
10:33:43
у каждого свое?)
есть классическое определение, можешь у фаулера почитать. А то, что у каждого долбоеба есть свое представление о жизни - всем, конечно, насрать )

Alexey
02.12.2016
10:34:03
а пассивная модель?

Сергей
02.12.2016
10:34:19
вот самый чистый

Alexey
02.12.2016
10:34:36

Стас Щетинников
02.12.2016
10:34:49
http://martinfowler.com/eaaDev/uiArchs.html - не благодарите

Alexander
02.12.2016
10:35:05
Ща все пойдут гуглить кто первым описал MVC :-)

Nikita
02.12.2016
10:35:05
https://habrahabr.ru/company/mobileup/blog/313538/

Google

Стас Щетинников
02.12.2016
10:35:06

Сергей
02.12.2016
10:35:16
ладно

Nikita
02.12.2016
10:35:22

n4nn31355
02.12.2016
10:35:30
mvc на реакте это плохая затея
да вопрос не в mvc, я просто пока успел только своим велосипедом для роутинга попользоваться, а тут вдруг наткнулся, что без подключения чего либо есть Router в коде и стало интересно откуда ноги растут

Alexey
02.12.2016
10:35:36

Admin
ERROR: S client not available

Сергей
02.12.2016
10:36:17
таки я не спорю))


George
02.12.2016
10:36:31
Добрый день. Я новичок в react
Есть вопрос по поводу обновления state для reducer'a.
У меня есть initial state такого вида
const INITIAL_STATE = {
items: {},
error:null,
loading: true
};
const goodsReducer = function(state = INITIAL_STATE, action) {
switch(action.type) {
case types.GET_GOODS:
return { ...state, loading: true };
case types.GET_GOODS_SUCCESS:
return { ...state, items: action.payload, loading: false };
case types.GET_GOODS_FAILURE:
return { ...state, error:action.payload, loading: false };
case types.GET_GOODS_ITEM:
return { ...state, loading: true };
case types.GET_GOODS_ITEM_SUCCESS:
return { ...state, items: action.payload, loading: false };
case types.GET_GOODS_ITEM_FAILURE:
return { ...state, error:action.payload, loading: false };
default:
return state;
}
}
Прикрепил скриншот с загруженными данными в State
У меня есть операции CRUD.
Я использую единственный state для всех видов операций.
State у меня прошел нормализацию при помощи normalizr.
Благодаря тому что данные нормализованы, я могу обращаться к нужному Goods по id.
У меня два вопроса:
Первый:
У меня не верно обновляется state когда я получаю один единственный goods по id - операция READ
Вот этот момент
case types.GET_GOODS_ITEM_SUCCESS:
return { ...state, items: action.payload, loading: false };
Я ожидаю что полученный items, должен объединиться с предыдущем state, вместо этого в state находить только что поступившей объект. Старые данные затираются, объединения старого state и с полученными данными не происходит.
Возможно это из-за того что объект items.result содержит массив?
Пробывал использовать библиотеку seamless-immutable - тоже самое.
Второй:
Как лучше организовать работу при запросе данных с сервера?
Т.е. - я хожу по следующим страницам в браузере.
/goods/
/goods/:id
И каждый раз я отправляю get запрос на сервер, даже если данные уже содержатся в state, так как загружаю данные когда компонент монтируется componentWillMount() .
Как этот момент организовать - делать проверку: если есть данные в state, то не нужно отправлять запрос на сервер?


Сергей
02.12.2016
10:36:34
но на только реакте строить mvc Это немного странно)
Не думаешь?

Nikita
02.12.2016
10:37:07
нормас

Alexey
02.12.2016
10:37:10
нормально будет работать
выглядеть точно будет лучше чем ваше легаси на редаксе

Nikita
02.12.2016
10:38:12
конечно, setState рулит!

a
02.12.2016
10:38:25
https://blog.talkjs.com/how-react-brought-model-view-controller-back-to-the-masses-4f3caf3a3f2f#.7firqp6uv

Сергей
02.12.2016
10:38:29

Nikita
02.12.2016
10:38:33
для чего еще придумали componentDidMount, как не для ajax запросов?

Сергей
02.12.2016
10:38:34
а троллинг)


Nikita
02.12.2016
10:40:49
Добрый день. Я новичок в react
Есть вопрос по поводу обновления state для reducer'a.
У меня есть initial state такого вида
const INITIAL_STATE = {
items: {},
error:null,
loading: true
};
const goodsReducer = function(state = INITIAL_STATE, action) {
switch(action.type) {
case types.GET_GOODS:
return { ...state, loading: true };
case types.GET_GOODS_SUCCESS:
return { ...state, items: action.payload, loading: false };
case types.GET_GOODS_FAILURE:
return { ...state, error:action.payload, loading: false };
case types.GET_GOODS_ITEM:
return { ...state, loading: true };
case types.GET_GOODS_ITEM_SUCCESS:
return { ...state, items: action.payload, loading: false };
case types.GET_GOODS_ITEM_FAILURE:
return { ...state, error:action.payload, loading: false };
default:
return state;
}
}
Прикрепил скриншот с загруженными данными в State
У меня есть операции CRUD.
Я использую единственный state для всех видов операций.
State у меня прошел нормализацию при помощи normalizr.
Благодаря тому что данные нормализованы, я могу обращаться к нужному Goods по id.
У меня два вопроса:
Первый:
У меня не верно обновляется state когда я получаю один единственный goods по id - операция READ
Вот этот момент
case types.GET_GOODS_ITEM_SUCCESS:
return { ...state, items: action.payload, loading: false };
Я ожидаю что полученный items, должен объединиться с предыдущем state, вместо этого в state находить только что поступившей объект. Старые данные затираются, объединения старого state и с полученными данными не происходит.
Возможно это из-за того что объект items.result содержит массив?
Пробывал использовать библиотеку seamless-immutable - тоже самое.
Второй:
Как лучше организовать работу при запросе данных с сервера?
Т.е. - я хожу по следующим страницам в браузере.
/goods/
/goods/:id
И каждый раз я отправляю get запрос на сервер, даже если данные уже содержатся в state, так как загружаю данные когда компонент монтируется componentWillMount() .
Как этот момент организовать - делать проверку: если есть данные в state, то не нужно отправлять запрос на сервер?
на первый:
return { ...state, items: action.payload, loading: false };
распиши по отдельности то что ты хочеш обновить
var r = {}
r.loading = false
... и так далее
скорее всего найдеш ошибку между тем как ты думаеш это работает и как на самом деле


George
02.12.2016
10:52:00

Eugene
02.12.2016
11:01:11
Всем привет, подскажите плз.
Допустим, у меня есть компонент MyInput, состоящий из input.
Как мне получить из компонента App value компонента MyInput с помощью ref?

Google

Nikita
02.12.2016
11:08:04
никак, тебе не должно такого хотеться

Sanjar
02.12.2016
11:08:35

Eugene
02.12.2016
11:08:53
Есть такой способ
this.refs.username.refs.input.value
Но как-то длинно

Nikita
02.12.2016
11:08:59
окей, прокинуть ref до нужного компонента)

from
02.12.2016
11:09:10

Eugene
02.12.2016
11:09:16
А как тогда работать?)
Через handleChange?

⭐️Alexandra
02.12.2016
11:09:17

from
02.12.2016
11:09:23

Brs
02.12.2016
11:09:27
string ref - deprecated если что

Nikita
02.12.2016
11:09:42

KlonD90
02.12.2016
11:09:54

Nikita
02.12.2016
11:09:59

Eugene
02.12.2016
11:10:02
да
Но тогда же компонент перерисовывается, не? Разве это не плохо?

Brs
02.12.2016
11:10:15

from
02.12.2016
11:10:25
По-моему компоненты типа MyInput в идеале должны иметь минимально отличимый api от input компонента