Kurzdor
И при переходе на /foo подгружать Foo с отдельного чанка
🅅aleriy
Каждая папка как отдельный проект
У тебя эти компоненты в роуте подключаются?
Stas
Эээ, ну типа лэйзи лоад
а там как-раз будет 3 бандла отдельных? (не пробовал просто ни разу)
🅅aleriy
Сделай lazy import
DErek
У тебя эти компоненты в роуте подключаются?
Нет , просто каждая папка отдельный апп
Mikhail
я просто обернул бы Foo в ленивую загрузку
примерно так LazyFoo = (props => <Lazy {...props} promise={import("./Foo.js")}/>)
🅅aleriy
Нет , просто каждая папка отдельный апп
Ну в общем в доке почитай про lazy и suspense
Daniil
ммм, может я пещерный человек, но щас уже дружат лейзи лоад с сср?
Daniil
ладно код сплитинг, а лейзи?
Dmitry
Привет, кто использует TypeScipt, какой способ задачи типов лучше для Redux Actions? Через const type = 'type' или enum Type {}
Mikhail
для сср можно не делать ленивую загрузку если она не работает
Dmitry
Сначал туда написал, думал ошибся. Ок, спасибо
Mikhail
тогда сразу и предупреждайте человека
у меня сср нет, я хз, что там как
Daniil
за прогрессом лейзи лоада на сср давно уже не следил, помню что раньше было проблематично, мб конечно пропустил что - то
Никита Суханов
Ну в общем в доке почитай про lazy и suspense
ты оказался прав, нужно было вынести код с копмпонента. почему?
Mikhail
cost Cmp = lazy(() => import( blabla.js''))
угу, еще проще, у меня просто Lazy не реактовый нативный
Andrey
Потому что каждый раз, когда вызывается рендер (реконсиляция), твоя функция заново создаётся, а прошлая превращается в тыкву
🅅aleriy
ты оказался прав, нужно было вынести код с копмпонента. почему?
Чтобы функция не пересозбавалась во время ререндеринга
🅅aleriy
угу, еще проще, у меня просто Lazy не реактовый нативный
А вот нереактовый по моему как раз с сср может быть и работает
Никита Суханов
Чтобы функция не пересозбавалась во время ререндеринга
ну даже если пересоздасться. что не так?:
Oleh
да
Mikhail
А вот нереактовый по моему как раз с сср может быть и работает
class Lazy extends Component { constructor(props) { super(props); this.state = {}; props.promise.then(({default: component}) => this.setState({component})); } render() { const c = this.state.component; if (!c) return null; const {promise, ...otherProps} = this.props; return React.createElement(c, otherProps) } }
🅅aleriy
ну даже если пересоздасться. что не так?:
Ну считай что при каждом срабатывания колбэка у тебя таймер будет сбрасываться
Daniil
А вот нереактовый по моему как раз с сср может быть и работает
А разница? Концепция же в том, чтобы подгружать когда область компонента будет видна грубо говоря.
🅅aleriy
Или как там твой дебаунс велосипедный рабо ает
Daniil
ну да, хз, надо будет глянуть опять, может уже боли меньше
🅅aleriy
Наивный реактовский лэзи пока поскромнее
🅅aleriy
И lazy + suspense на проде
Daniil
так саспенс же не мог в сср?
Daniil
уже все ок?
🅅aleriy
в каком виде скромнее?
Да прямо в доке реакта их сиавнивают
🅅aleriy
так саспенс же не мог в сср?
Да кому на хер этот ваш сср нужен? :)))
Daniil
блэт я же в его рамках и говорю
Daniil
а не просто так
🅅aleriy
Ааа
Mikhail
React.lazy and Suspense is not yet available for server-side rendering. If you want to do code-splitting in a server rendered app, we recommend Loadable Components. It has a nice guide for bundle splitting with server-side rendering.
Daniil
ну вот есть у меня злоебучий проект с сср
Daniil
и я пытался крутить туда лейзи лоад полгода назад точно
Daniil
хуй там
🅅aleriy
Хз мне повезло, все проекты корпоративные без ssr без seo
Daniil
ух
Никита Суханов
кто может, помогите пожалуйста понять в чем проблема с этим ебаным дебаунсом, нервов нет уже
Никита Суханов
https://codepen.io/Shrek556/pen/pmWoMo?editors=0010
🅅aleriy
Без ssr с сео)
Хз звучит страшновато :))
Dmitriy
Хз звучит страшновато :))
Да чё норм, сча гугл краулер апдейтнул, ваще заживём)
Daniil
Да чё норм, сча гугл краулер апдейтнул, ваще заживём)
ну ваще да, но мы пока боимся отрубить сср и посмотреть шо будет с сео
Никита Суханов
Daniil
тк мне кажется что еще не на 100% все окич
🅅aleriy
для инпута
И что при изменении инпута должно происходить в твоём понимании?
Vadim
В первом console log-e нормальный target а во втором null. Ето как вобще?
Никита Суханов
И что при изменении инпута должно происходить в твоём понимании?
отправляться запрос на бд и формироваться список,чтоб помочь пользователю выбрать
🅅aleriy
отправляться запрос на бд и формироваться список,чтоб помочь пользователю выбрать
Допустим ты ввёл букву Через 250мс ввёл вторую, через 100мс третью, через секунду 4 Сколько запросов должно улететь?
Mikhail
В первом console log-e нормальный target а во втором null. Ето как вобще?
setState асинхронный, эвент похерился к моменту выполнения
🅅aleriy
0
А сколько надо выждать чтоб запрос ушёл?
Mikhail
сеунду
зачем так долго?
🅅aleriy
сеунду
Весьма отзывчивый интерфейс
🅅aleriy
Может просто по энтеру тогда?
Никита Суханов
код не работает, понимаешь?
🅅aleriy
код не работает, понимаешь?
onChange={({ target}) => debounced(target.value, handler)...
Владислав
Всем привет! Есть вопрос. Есть объект: ru: { ensure: { TESTING_THE_MAIN_FUNCTION_OF_THE_SITE: "Протестируем основные <br /> функции сайта" } } Есть вот такой рендер в компоненте <p className="ttl"> {ruContentTxt.ru.ensure.TESTING_THE_MAIN_FUNCTION_OF_THE_SITE} </p> Как поправить, чтобы <br / > оставался тегом а не строкой?
Никита Суханов
onChange={({ target}) => debounced(target.value, handler)...
там не дебаунсел выполняется
🅅aleriy
там не дебаунсел выполняется
Я тебе принцип показал
Никита Суханов
Я тебе принцип показал
в чем он заключается?