
gnoblin
24.10.2018
23:01:00

Andry
24.10.2018
23:02:02

Andrew
24.10.2018
23:02:37
https://medium.com/@dmnsgn/singleton-pattern-in-es6-d2d021d150ae

Google

AluV
24.10.2018
23:03:02
Я вот эту штуку нашел может попробую
https://github.com/Caesor/react-singleton

Andrew
24.10.2018
23:03:37
бля
ты реакт класс хочешь сделать синглтоном ?

AluV
24.10.2018
23:06:37
да думаю обычный класс можно запилить

gnoblin
24.10.2018
23:08:08

Kelin
25.10.2018
00:33:29
https://github.com/styled-components/styled-components/issues/2146

Artyom
25.10.2018
00:36:39
Это больше выглядит как баг .memo....

Kelin
25.10.2018
00:38:16
Ага

Kevin
25.10.2018
00:39:29
если с recompose/pure работает нормально, то это будет и правда memo

Artyom
25.10.2018
00:41:05
Ну и костыли...
Чет реакт все меньше радует последнее время

Google

Kevin
25.10.2018
00:42:36
а вроде писали, что будет проверка, чтобы был именно модуль, а не объект с ключом default
просто используйте export default :)

Artyom
25.10.2018
00:42:40
Вот почему нельзя было сделать
suspense(
<div>Loading...</div>,
<Component />
)

Andrey
25.10.2018
00:42:53
react/memo.js at master · facebook/react · GitHub
https://github.com/facebook/react/blob/master/packages/react/src/memo.js

Artyom
25.10.2018
00:42:58

Kelin
25.10.2018
00:43:06

Andrey
25.10.2018
00:43:15
Мемо - это не декоратор.
Это отдельный тип компонента.

Artyom
25.10.2018
00:43:57

Kelin
25.10.2018
00:44:11
Тут у меня сразу вопрос насчет работы мемоизации в компонентах
В класс-компонентах коллбеки можно положить в метод, чтобы они не пересоздавались в рендере. Что делать с SFC, в котором коллбеки никуда не положить?
У меня есть редактор из X айтемов, и при редактировании одного айтема происходит ререндер всех айтемов тупо из-за того, что коллбеки заново создаются и это типа другой проп.

Andrey
25.10.2018
00:44:43
Я же показывал не раз как корректно делать колбеки.

Artyom
25.10.2018
00:45:28

Kelin
25.10.2018
00:46:09
Делай pureComponent
Я уже так сделал. Но я не хочу переводить все компоненты в классы из-за этого
Я бы вынес это в эффектор и был бы #антибугурт, но с несколькими инстансами работать нормального способа пока нет

Andrey
25.10.2018
00:46:31
УДОБНО
Да. Мемо отвечает спеке. Если ты опираешься не на спеку, а реализацию, то ты мудак.

Kelin
25.10.2018
00:47:01

Artyom
25.10.2018
00:47:20

Kevin
25.10.2018
00:48:00

Kelin
25.10.2018
00:49:06
Но насчет мемо, хочу внести 5 копеек и сказать, что если бы SFC изначально транспилился в какой-нибудь объект, добавить в него мемо было бы проще без плясок в заворачивание ?

Google

Kelin
25.10.2018
00:49:23
Но тогда теряется смысл SFC, типа "это просто функция"

Andrey
25.10.2018
00:49:36
Какая спека?
Спека того что такое компонент и как он должен работать. Я хз как sc биндятся к компонентам. Если они считают, что компонентом не может быть объект, то это нарушение спеки.
Тебе нигде не сказано, что объект не может восприниматься как компонент.

Artyom
25.10.2018
00:50:13
@kelin2025
Ответственность JSX - отвечать за отображение DOM блоков. А не разруливать роутинг и мемоизацию - это же бред
Либо нам нужен еще один какой-то синтаксис \ теги или пометки для JSX для инкапсулирования логики, если хочется что-то описать декларативно
Но это не должен быть абсолютно тот же JSX !
Это же ясно как день.
На Бали.
В июле.
...
Почему нет <If>...<Else>...?? И т.п.? Потому что должна соблюдаться семантика - синтаксическая инкапсуляция абстракций

Andrey
25.10.2018
00:50:40

Kelin
25.10.2018
00:51:05
Не вижу противоречий моего утверждения и твоего

Artyom
25.10.2018
00:51:51

Artyom
25.10.2018
00:52:01

Andrey
25.10.2018
00:52:19
Сам придумал - сам обиделся.

Kevin
25.10.2018
00:52:30
+
Как с экспортами

Artyom
25.10.2018
00:53:11

Andrey
25.10.2018
00:53:30

Kelin
25.10.2018
00:54:40
Я всего лишь предположил возможность легко добавлять фичи в компоненты. Использовать объект вместо функции. Не было бы никаких проблем - добавить проп memo и пускай реакт его чекает и думает, ререндерить ему или нет. Причем тут блять JSX, ему вообще в данном случае пофиг, что там за мемо

Kevin
25.10.2018
00:54:51
А что возвращал React.createClass?

Google

Artyom
25.10.2018
00:55:08

Kelin
25.10.2018
00:56:05

Andrey
25.10.2018
00:57:03
О какой спеке речь?
В данном случае о документации реакта. В ней не сказано что такое компонент на низком уровне. Но почему то все подумали, что это только функции. Вот sc на это и напоролись. Здравствуйте.
Уверен что проблема решается тупо вырезанием варнинга в sc.

Admin
ERROR: S client not available

Artyom
25.10.2018
00:57:47

Andrey
25.10.2018
00:57:59
И что?
Сейчас это так. В следующей версии расширят определение.
Что сейчас и произошло, кстати.

Kelin
25.10.2018
00:59:17

Andrey
25.10.2018
01:00:20
Теперь у нас компонент - это объект особого вида.
См. Memo

Kelin
25.10.2018
01:00:47
Вот по-нормальному надо было его объектом сразу и сделать

Kevin
25.10.2018
01:01:07
А разве так изначально и не было?

Kelin
25.10.2018
01:01:08
Объектом особого вида и расширять при необходимости


Max
25.10.2018
01:02:08
Потому что мобх усаживает тебя на пенек с хуями под названием "магия" и обливает говном декораторов, со словами "теперь это твой дом, ублюдок"
Опять вброс про mobx) Извини но я не могу не ответить)
Мне кажется заявлять что mobx такой плохой потому что в нем куча "магии" сродни тому как не зная что такое промисы и имея только знакомство с коллбеками заявлять что async/await является магией. В этой "магии" есть минус только в том что она немного повышает порог вхождения (как и async/await которые требуют знания промисов) но зато после того как разобрался с mobx все становится прозрачным и ничем не хуже редакса в плане предсказуемости
1) Mobx не заставляет "обливаться говном декораторов". Декоратор это просто синтаксический сахар который экономит две строчки кода. Хочешь не используй декораторы и вместо одной строчки
class SomeStore {
@observable user = "";
...
}
пиши 3 строчки
class SomeStore {
_user = observable("");
get(){ return this._user.get() }
set(val){ this._user.set(val) }
...
}
2) А если уже геттеры и сеттеры жс каждутся магией то mobx не заставляет их использовать - это всего лишь синтаксический сахар обращения к полям, хочешь не используй но вместо простой записи
<div>
task's folder name:
{this.props.task.project.folder.name}
</div>
придется на каждое обращение к полям добавлять .get() вызовы
<div>
task's folder name: {this.props.task.get().project.get().folder.get().name.get()}
</div>
3) Если работа самого mobx кажется "магией" то на хабре есть несколько постов (https://habr.com/users/bgnx/posts) с подробным объяснением как он работает.
А основной механизм работы mobx можно даже в объяснить в одном предложении:
При оборачивании компонента observer-хокком mobx врапит рендер-функцию компонента и при вызове присваивает в глобальную переменную (а при выходе из функции возращает предыдуще значение) ссылку на инстанс этого компонента чтобы при обращении к observable-сторам (которые создаются через observable(val)) через .get()-вызов происходило добавление компонента из глобальной переменный в массив подписок этого observable-стора и потом при изменении значения стора через .set("") происходил вызов рендера всех компонентов из массива подписок
Правда надо заметить что в mobx в массив подписок добавляется не сам компонент а объект реакции который уже будет вызывать сайд-эффект обновления компонента, а computed это некий подпид реакции который вместо сайд-эффекта перевычисляет функцию (добавляя таким образом мемоизацию) и решает глитчи (лишние вычисления). Но даже все это можно написать в 85 строчках кода (https://habr.com/post/349022)


Andrey
25.10.2018
01:03:16
react/isValidElementType.js at master · facebook/react · GitHub
https://github.com/facebook/react/blob/master/packages/shared/isValidElementType.js
Sc с фораардрефом корректно работают?)

Kelin
25.10.2018
01:05:15

Google

Kelin
25.10.2018
01:05:36

Kevin
25.10.2018
01:06:02

Max
25.10.2018
01:06:19

Andrey
25.10.2018
01:06:29
Да
Тогда проблемы у sc, а не реакта, так как memo сделан абсолютно так же как и forwardRef

Kelin
25.10.2018
01:07:14
Но то, что какой-нить React.memo возвращает объект - на кодовой базе проекта никак не сказывается, все подсказки и прочее работает заебись
Сделали бы тогда изначально React.sfc(() => ...)

Andrey
25.10.2018
01:09:23


Max
25.10.2018
01:10:47

Kelin
25.10.2018
01:10:52

Andrey
25.10.2018
01:11:31

Kevin
25.10.2018
01:12:41
Вообще, мне в таких случаях хочется говорить, что проблема не в том, какое решение приняли разработки реакта, а в том, что сам язык — говно и как ни выкручивайся, удобно не получится. Даже с этими грёбаными хэндлерами, которые либо на каждом рендере заново создаются, либо докидывают в код бойлерплейта

Сергей
25.10.2018
01:13:52


Max
25.10.2018
01:13:57