@react_js

Страница 2191 из 5115
Дмитрий
22.09.2017
21:00:12
То есть store, условно, type Store = Array<{ method: string, timestamp: number, args: any }>

Ясно))

Дмитрий
22.09.2017
21:08:03
А от чего тебя отговорили ?
Да не от чего собственно, просто тут иногда обсуждают способы управления стейтом и регулярно появляются чуваки топящие за mobx

Google
Дмитрий
22.09.2017
21:08:28
Подумал было: "О, подходящий кейс", но что-то как-то не айс(

Stepan
22.09.2017
21:11:11
А mobx сильно удобнее redux?

Maxim
22.09.2017
21:11:39
С mobx я довольно быстро расстрелял себе ноги, а с state-tree не разбирался. Возможно время поменялось и есть хорошие аргументы за

Denis
22.09.2017
21:12:27
Ничего не поменялось :)

Maxim
22.09.2017
21:15:23
А что случилось при использовании mobx? Интересно)
каждый лепил сторы к своим формам по своему, не было понимания как собственно организовать стор. Как сериализовывать его изменения. Как откатывать в случае неудавшихся оптимистичных апдейтов

вот последнее прям дробовик в ноги )

Дмитрий
22.09.2017
21:15:53
Понятно, убедительно ?

Котяй Негодяй
22.09.2017
21:17:07
Если вкраце, "мы развлекались, как могли. Но сейчас по-тихому пилим на редаксе"?

Maxim
22.09.2017
21:17:54
Если вкраце, "мы развлекались, как могли. Но сейчас по-тихому пилим на редаксе"?
Я не сразу понял редакс, и вообще из мира AS3 где правит мобиксоподобный Bindable

Игрались, так и есть )

Denis
22.09.2017
21:21:13
Мобикс стоит попробовать для того чтобы ярче ощутить плюсы ридакса

Котяй Негодяй
22.09.2017
21:21:59
Скажите. А у AST есть какой-то формат? Или я могу распарсить что-нибудь в понятную одному мне структуру, по которой буду генерить код, и я могу называть это AST?

Google
Maxim
22.09.2017
21:22:02
Кстати, сейчас вооружился оптикой, заюзал альтернативное IO для саги, и редакс остался нужен только для связки прикольных тулзовин )

ну тупа девтулс классный для сравнения стейтов и т.д.

Понятно, убедительно ?
ты таки собрал себе тулзу с призмами и куртизанками для редакса ? или редюсерами обходишься ?

Котяй Негодяй
22.09.2017
21:51:49
Дмитрий
22.09.2017
21:52:29
Ага

Котяй Негодяй
22.09.2017
21:52:34
Что если я таки распарсил TG Bot API и сделал своё AST на коленке? Его нужно подгонять под стандарты?

Дмитрий
22.09.2017
21:53:44
Знаешь как появился текущий "стандарт" (с вариациями)? Мозилла просто сделали свою имплеменацию по каким-то своим нуждам, в итоге все подхватили

Stepan
22.09.2017
21:54:23
Что такое AST?

Дмитрий
22.09.2017
21:54:32
А где ты кстати в bot api сделаешь ast? Там публичный же только сам api-интерфейс

Котяй Негодяй
22.09.2017
21:55:07
Что такое AST?
Абстрактное синтаксическое дерево.

Ostap
22.09.2017
21:55:26
https://twitter.com/sebmck/status/911347263187845120

Дмитрий
22.09.2017
21:55:34
А где ты кстати в bot api сделаешь ast? Там публичный же только сам api-интерфейс
А внутри он описан на tl — языке запросов mtproto Я кстати не откажусь, если ты поможешь сделать ast mtproto ? https://github.com/zerobias/ties

Котяй Негодяй
22.09.2017
21:56:10
Надёжно. Единственное, возвращаемые типы приходится подставлять руками. Для этого завёл словарь.

Я парсил ДОКУМЕНТАЦИЮ. =)))

Нигде же больше нет.

Google
Котяй Негодяй
22.09.2017
21:57:01
Ни схемы, ничего.

А апишка обновляется.

Дмитрий
22.09.2017
21:57:51
Ну описание api это всё же несколько иное)

Котяй Негодяй
22.09.2017
21:58:01
Вот результат: https://github.com/bigslycat/tgapi/blob/rethinking/src/generatedTypes.js

Дмитрий
22.09.2017
21:58:34
!! Кстати!

Пока вспомнил))

Котяй Негодяй
22.09.2017
21:58:43
4000 строк, я бы вспотел.

Мм?

Дмитрий
22.09.2017
21:59:05
http://transform.now.sh is really impressive. Just give it a JSON response and it will generate type definitions for you.

typescript / flow тайпинги

Кирилл
22.09.2017
23:00:28
https://code.facebook.com/posts/300798627056246/relicensing-react-jest-flow-and-immutable-js/

Denis
22.09.2017
23:25:44
https://twitter.com/reactjs/status/911347634069168128

:)

Max
22.09.2017
23:38:20
каждый лепил сторы к своим формам по своему, не было понимания как собственно организовать стор. Как сериализовывать его изменения. Как откатывать в случае неудавшихся оптимистичных апдейтов
я например пришел к таким практикам - стор лучше организовывать по сущностям - не пилить один стор-класс на все приложение, как некоторые делают (или явно создают стор как лишнюю сущность только для того чтобы хранить массив задач - TodosStore наример) а организовывать по бизнес-объектам. Например есть приложение project-менеджер, где юзер может создать папки, в папках проекты, в проектах доски, в досках таски, в тасках комментарии и на эти комментарии можно отвечать (получаем древовидные комментарии). И соотвественно каждую папку, проект, доску, таск и комментарий можно отредактировать и удалить. Более того мы не привязываемся в данном случае к тому как выглядит ui, потому что он вообще может быть совершенно разным и постоянно меняться, и вообще важно не делать привязку к ui при хранении состояния. В редаксе я заметил что все организовывают состояние совершенно по разному а с мобиксом такую (и любую другую) бинес-схему приложения можно реализовать одним единственным образом через создание стора на каждую сущность. В данном случае у нас будет стор User, стор Folder, стор Project, стор Board, стор Task и стор Comment и будет такой набор классов class User { @observable folders = [] @observable name = '' .... } class Folder { @observable projects = [] @observable user; @observable name = '' .... } class Project { @observable boards = [] @observable folder @observable name = '' .... } class Board { @observable tasks = [] @observable project @observable name = '' .... } class Task { @observable comments = [] @observable board @observable text = '' .... } class Comment { @observable comments = [] @observable parentComment @observable task @observable text = '' .... }и соотвественно когда нужно создать отредактировать или удалить любую сущность мы делаем примерно так //create var task = new Task() task.text = 'some text' task.board = board board.tasks.push(task) //remove task.board.tasks.splice(task.board.tasks.indexOf(task),1) //edit task.text = 'new text'либо если хотим уменьшить болерплейт и вручную не присваивать каждое свойство то можно создаем базовый класс для сущностей и добавить метод create() и update() и тогда получаем task.update({text: 'new text', board: board}) или Task.create({text: 'new text', board: board}) class BaseStore { static create(data){ return (new this()).update(data) } update(data){ return Object.assign(this, data) } }При этом можем заменить таск на любую другую сущность и у нас ничего не меняется когда в редаксе нужно создавать отдельные редюсеры на каждую сущность. Теперь насчет оптимистических обновлений - поскольку мы можем перехватывать любое обновление в базовом классе то мы можем создать некий массив-буффер обнолений, складывать в него объекты обновлений data и при ошибке откатывать. Или можно развить дальше и сделать чтобы базовый класс при вызове метода task.update({text: 'new text'}) не просто делал Object.assign а и логгировал каждое обновление как редакс, диспатчил какие-то экшены и делал снимки состояния чтобы получить плюшки иммутабельности редакса - time-travel и hot-reload и вообще он может заодно и отсылать запрос на сервер, а добавив еще статический метод fetch будет врапить полученные объекты от сервера в классы var user = User.create() user.folders.push(...await Folder.fetch(user)) var folder = await Folder.create({name: 'new folder', user: user}) //посылает запрос на сервер на создание папки user.folders.push(folder) await folder.update({name: 'new folder name'}) //обновляет локально и посылает запрос на сервер await folder.delete() //посылает запрос на удаление папки folder.user.folders.splice(folder.user.folders.indexOf(folder),1)В примере выше если для оптимистичных обновлений не нужно дожидаться ответа от сервера то можно добавить вторым параметром флаг чтобы update() возвращал не промис а сам объект и тогда его запушить в массив родительской сущности и получить обновление компонентов пока запрос выполняется

Котяй Негодяй
22.09.2017
23:40:23
о.0

А у Вас, случайно, не Толстой фамилия?

Max
22.09.2017
23:46:28
)), нет, я хотел ответь кратко но не удержался)

Google
Sergey
22.09.2017
23:47:02
я например пришел к таким практикам - стор лучше организовывать по сущностям - не пилить один стор-класс на все приложение, как некоторые делают (или явно создают стор как лишнюю сущность только для того чтобы хранить массив задач - TodosStore наример) а организовывать по бизнес-объектам. Например есть приложение project-менеджер, где юзер может создать папки, в папках проекты, в проектах доски, в досках таски, в тасках комментарии и на эти комментарии можно отвечать (получаем древовидные комментарии). И соотвественно каждую папку, проект, доску, таск и комментарий можно отредактировать и удалить. Более того мы не привязываемся в данном случае к тому как выглядит ui, потому что он вообще может быть совершенно разным и постоянно меняться, и вообще важно не делать привязку к ui при хранении состояния. В редаксе я заметил что все организовывают состояние совершенно по разному а с мобиксом такую (и любую другую) бинес-схему приложения можно реализовать одним единственным образом через создание стора на каждую сущность. В данном случае у нас будет стор User, стор Folder, стор Project, стор Board, стор Task и стор Comment и будет такой набор классов class User { @observable folders = [] @observable name = '' .... } class Folder { @observable projects = [] @observable user; @observable name = '' .... } class Project { @observable boards = [] @observable folder @observable name = '' .... } class Board { @observable tasks = [] @observable project @observable name = '' .... } class Task { @observable comments = [] @observable board @observable text = '' .... } class Comment { @observable comments = [] @observable parentComment @observable task @observable text = '' .... }и соотвественно когда нужно создать отредактировать или удалить любую сущность мы делаем примерно так //create var task = new Task() task.text = 'some text' task.board = board board.tasks.push(task) //remove task.board.tasks.splice(task.board.tasks.indexOf(task),1) //edit task.text = 'new text'либо если хотим уменьшить болерплейт и вручную не присваивать каждое свойство то можно создаем базовый класс для сущностей и добавить метод create() и update() и тогда получаем task.update({text: 'new text', board: board}) или Task.create({text: 'new text', board: board}) class BaseStore { static create(data){ return (new this()).update(data) } update(data){ return Object.assign(this, data) } }При этом можем заменить таск на любую другую сущность и у нас ничего не меняется когда в редаксе нужно создавать отдельные редюсеры на каждую сущность. Теперь насчет оптимистических обновлений - поскольку мы можем перехватывать любое обновление в базовом классе то мы можем создать некий массив-буффер обнолений, складывать в него объекты обновлений data и при ошибке откатывать. Или можно развить дальше и сделать чтобы базовый класс при вызове метода task.update({text: 'new text'}) не просто делал Object.assign а и логгировал каждое обновление как редакс, диспатчил какие-то экшены и делал снимки состояния чтобы получить плюшки иммутабельности редакса - time-travel и hot-reload и вообще он может заодно и отсылать запрос на сервер, а добавив еще статический метод fetch будет врапить полученные объекты от сервера в классы var user = User.create() user.folders.push(...await Folder.fetch(user)) var folder = await Folder.create({name: 'new folder', user: user}) //посылает запрос на сервер на создание папки user.folders.push(folder) await folder.update({name: 'new folder name'}) //обновляет локально и посылает запрос на сервер await folder.delete() //посылает запрос на удаление папки folder.user.folders.splice(folder.user.folders.indexOf(folder),1)В примере выше если для оптимистичных обновлений не нужно дожидаться ответа от сервера то можно добавить вторым параметром флаг чтобы update() возвращал не промис а сам объект и тогда его запушить в массив родительской сущности и получить обновление компонентов пока запрос выполняется
А я думал, ты просто уснул на клаве

Anton
22.09.2017
23:49:23
а можно просто использовать apollo

Denis
22.09.2017
23:49:59
Тсс

Max
22.09.2017
23:50:04
а можно просто использовать apollo
Нельзя просто так взять и использовать аполлло.жпг

Ilya
23.09.2017
01:59:07
Можно ли как-нибудь убрать именовку определенного .scss файла localIdentName: '[name]_[local]___[hash:base64:10]' при помощи коммента например, чтобы у меня глобальные классы иконок типа "fa-tint" не превращались в ".index_fa-tint___1pLxGuIuuC"?

Сделал отдельный таск .scssglobal где убрал эту опцию, нормальный это варинт или я велосипед придумал?

Anton
23.09.2017
03:07:37
тут дело скорее в css модулях. там есть селектор :global

Petr
23.09.2017
04:43:51
маша
23.09.2017
04:45:05
? Нашла чат для INSTAGRAMЩИКОВ, залетай: @inst_admins123 ?

☢Jura
23.09.2017
05:04:15
подскажите плиз. Если при итерации массива я хочу прокинуть данные элемента в колбек, какой лучший способ мне нужно использовать. Как вариант: handler = (item) => (e) => { … } .... render() { …. onClick={this.handler(item)} } В этом варианте очевидно что ф-ция в замыкании создается каждый раз при вызове render. Правильно ли я понимаю, что более экономично проставить элементу data-id и затем найти нужный элемент в списке. Если в этом будет необходимость?

Dmitry
23.09.2017
06:11:50
Надеюсь не бояню

Facebook объявил о перелицензировании React, Jest, Flow и Immutable.js Facebook пришёл к компромиссному решению вопроса обеспечения совместимости своего кода с проектами фонда Apache и объявил о смене лицензии на проекты React, Jest, Flow и Immutable.js. Вместо ранее применяемой для этих проектов лицензии BSD с дополнительным соглашением об использовании патентов ("BSD+Patent") утверждена лицензия MIT.

Kolyamba
23.09.2017
06:16:16
Надеюсь не бояню
всего лишь 4ый раз в этом чятике

andretshurotshka?❄️кде
23.09.2017
06:21:11
ждем пока обратно не поменяют лицензию

Andrey
23.09.2017
06:33:26
Знать бы ещё что mit лицензия даёт.

Алексей
23.09.2017
07:52:55
Знать бы ещё что mit лицензия даёт.
Она одна из самых мягких и пушистых

Andrey
23.09.2017
08:08:59
http://www.opennet.ru/opennews/art.shtml?num=47253

kana
23.09.2017
08:14:12
Чёт слишком резкий переход

Artyom
23.09.2017
08:22:27
Где (в каком файле) vscode описаны расширения?

Google
Oleg
23.09.2017
09:47:44
Кто подскажет как организовать такую работу. В кратце, есть "доска объявлений" в который есть страницы выдачи с формой (фильтры) для поиска необходимых данных, форма довольна обширная. На этой страницу по дефолты забиты данные в сторе и в didMount сразу идет подгрузка данных, при смене параметров соотвествнно выдачу обновляем. Но, помимо этой страницы, есть главная страницы с такой же формой, которая подтягивает параметры из того же редьюсера. Соответсвенно выбираем параметры, попадаем на страницу выдачи с правильными данными уже. В данной ситуации как бы более менее понятно все, как реализовать. Но есть еще ссылки, блоки (цели) при клике на которые мы попадаем на тут же страницы выдачи и сразу должны подгрузиться нужные данные по целе. Эти ссылки / цели включают в себя просто набор готовых параметров для фильтра. (/ads&param=1&param=2) Как правильно разрулить это все? На данным момент ссылки /цели реализовал через параметры в роуте, но после перехода на выдачу - смены какого-либо параметры в выдаче - после перехода на объявления на выдаче и возврате на выдачу из роута подтягиваются данные, из ссылки. Из этого я пришел к тому, что можно это решить более адеватно без роутов и так далее. Может кто предложить варианты?

kana
23.09.2017
10:33:20
Не скажу, что это лучший вариант, так как нужно передавать мусорный элемент в компонент, который не должен этого знать, но наверное самый эффективный, потому что альтернатива - делать лямбды в рендере (хотя если использовать какой withHandlers из рекомпоза, то норм)

Максим
23.09.2017
11:19:20
А посоветуйте какой-нить готовый react.js-шаблон с уже настроенными sass, jade, и редаксом?

andretshurotshka?❄️кде
23.09.2017
11:19:58
jade???

Дмитрий
23.09.2017
11:20:58
Seems legit

Таймураз
23.09.2017
11:21:20
реакт и jade? ты серьезно?
Я уже слышал о таком Блевал всю ночь

illiatshurotshka❄️
23.09.2017
11:21:21
jsj

Максим
23.09.2017
11:21:43
Хорошо, можно без джейда

illiatshurotshka❄️
23.09.2017
11:21:54


Страница 2191 из 5115