Juri
Господа, а в чем проблема с iframe у реакта? Чет он не слушается, когда хочу внутрь него по дому нырнуть.
Adv0cat
А коннект это что вообще физически? Чтоб понять, почему и насколько бэк с него потеть будет. Может кто подскажет
ну смотри, физически это обычный то ли get то ли post запрос, но не закрывающийся. Т.е. ты не послал запрос получил ответ и забыл сервер как страшны сон, как например пришел к тебе свидетель иеговы дал буклетик и ушел, а именно создаешь коннект, т.е. свидетель иеговы пришел к тебе в гости и сидит у тебя на диване и вчехляет переодически тебе что-то 🙂
Vlad
https://easy-peasy.now.sh/ юзал кто?
Juri
Домен один?
Неа. Видео с разных ресурсов.
Cenator 🐈
https://easy-peasy.now.sh/ юзал кто?
Ничем не лучше редакса
Andrei
Потому что тебе держать коннекты нужно только, если ты собираешся часто и много инфы слать, а если ради одного запроса держать целый коннект, то там беку придется попотеть)) Да, по сути ты таким образом ddos устраиваешь собственноручно, но все таки есть нюансы во всех подходах))
подозреваю, что это локальная какая-то проблема, так как в том, что я писал- ререндера нет, а в том, что было до меня- постоянно рендерится.. если вкратце, то я переписываю старый очень код на оптимизированный и новый) разберусь что вызывает бешеный ререндер-отпишу
Iv
ну смотри, физически это обычный то ли get то ли post запрос, но не закрывающийся. Т.е. ты не послал запрос получил ответ и забыл сервер как страшны сон, как например пришел к тебе свидетель иеговы дал буклетик и ушел, а именно создаешь коннект, т.е. свидетель иеговы пришел к тебе в гости и сидит у тебя на диване и вчехляет переодически тебе что-то 🙂
Это всё же более образно получилось. Мне было б интересно узнать механизм действия. Что программно значит «держать коннект»? Ну, я понимаю, что сервер как минимум должен в памяти держать ip адрес клиента, плюс какой-нибудь номер запроса или как там(мало знаю сетевые технологии, да ещё и плохо помню что знал). Наверно, слушающему нужно следить (постоянно опрашивать) у себя за каким-нибудь «файлом» в памяти (сокетом? Юникс-сокет это и есть файл в памяти?). Если это верно, то это даёт какое-то понимание, в чём дополнительная нагрузка когда «держишь коннект» (хоть и не ясно, насколько это сильная нагрузка) Может и не так, и скорей всего ещё что-то происходит
Adv0cat
подозреваю, что это локальная какая-то проблема, так как в том, что я писал- ререндера нет, а в том, что было до меня- постоянно рендерится.. если вкратце, то я переписываю старый очень код на оптимизированный и новый) разберусь что вызывает бешеный ререндер-отпишу
Предлагаю глянуть сразу на то, как рендерятся родители, потому что если ререндер родителя происходит, будет перерендерен и ребенок, так что посмотрите вверх по списку кто перерендеривает 😉
Vlad
Ничем не лучше редакса
но ведь минус тонны бойлерплейта
Cenator 🐈
но ведь минус тонны бойлерплейта
С редакс хуками и symbiote то же самое будет
Andrei
Adv0cat короче, разобрался.. есть у меня вот такое кейс от какого-то мудака, который это писал( я тут добавил только маппинг и все, не стал трогать ничего) if (!state.container) return state; // execute the calculations only if the view is mounted let newTranslateX = state.translateX + action.payload.diffX; let newTranslateY = state.translateY + action.payload.diffY; const coords = checkTranslateRanges(state.scale, state.container, {newTranslateX, newTranslateY}); console.log(state.translateX === coords.newTranslateX && state.translateY === coords.newTranslateY); return Map(state) .set('translateY',coords.newTranslateY) .set('translateX',coords.newTranslateX) .toJS(); ну и короче говоря, стейт меняется всегда, даже когда ничего не поменялось
Andrei
Ну вот и замечательно, что разобрались 😉 А то селекторы сразу виноваты 😆
😝 if(state.translateX === coords.newTranslateX && state.translateY === coords.newTranslateY){ return state; } банальный фикс
Adv0cat
Это всё же более образно получилось. Мне было б интересно узнать механизм действия. Что программно значит «держать коннект»? Ну, я понимаю, что сервер как минимум должен в памяти держать ip адрес клиента, плюс какой-нибудь номер запроса или как там(мало знаю сетевые технологии, да ещё и плохо помню что знал). Наверно, слушающему нужно следить (постоянно опрашивать) у себя за каким-нибудь «файлом» в памяти (сокетом? Юникс-сокет это и есть файл в памяти?). Если это верно, то это даёт какое-то понимание, в чём дополнительная нагрузка когда «держишь коннект» (хоть и не ясно, насколько это сильная нагрузка) Может и не так, и скорей всего ещё что-то происходит
Ну по сути если все упростить, то при создании коннекта, содается инстанс класса, который кладется в оперативную память, вешаются на него слушатели и собственно чем больше коннектов, тем больше в памяти таких инстансов с навешаными слушателями 🙂 И большинство из них просто молчать может, а память жрут)) А обычный реквест это создали пул таких инстансов, соединились, обработали, даже не вешаясь слушателями, отдали ответ и поклали в пул объектов обратно
Adv0cat
😝 if(state.translateX === coords.newTranslateX && state.translateY === coords.newTranslateY){ return state; } банальный фикс
Каждый раз, когда вы думаете, что в чем-то ошибка и она методом науного тыка не решилась, вычлените проблему, воспроизведите с минимальной реализацией и дальше играйтесь без лишнего хлама и чините 😉
Игорь
Такой вопрос. Есть компонент пагинации с кнопками и стрелками пролистывания вперёд/назад. Цыфры на кнопках пролистываются с нажатием на стрелки Когда быстро листаешь вперёд, все ок. Когда быстро листаешь назад, компонент тупит, глючит нажатие на стрелку назад. Я так понимаю это из-за механизма проверки виртуал дом? Как это можно оптимизировать?
Andrei
Adv0cat это точно.. спасибо за помощь)
Andrei
Такой вопрос. Есть компонент пагинации с кнопками и стрелками пролистывания вперёд/назад. Цыфры на кнопках пролистываются с нажатием на стрелки Когда быстро листаешь вперёд, все ок. Когда быстро листаешь назад, компонент тупит, глючит нажатие на стрелку назад. Я так понимаю это из-за механизма проверки виртуал дом? Как это можно оптимизировать?
во первых не храни все данные на стороне клиента, во вторых удаляй данные после того, как сменилась страницы, в третьих проверяй на то, что пользователь много раз клацает( можешь либо debounce поставить, либо( лучше всего) поставить блокировку на кнопку, чтобы пользователь не смог переключить через страницу/две/три пока грузятся данные)
Игорь
Проблема именно в компоненте с кнопками, и поведения стрелки назад. Дебаунс тогда сделаю
Cenator 🐈
Дебаунс не подходит по ux кмк, лучше при клике добавлять переход в очередь
Игорь
Не-а, данные все на клиенте есть именно для этой таблицы. Проблема именно в скорости перерисовки кнопок при листании. Вперёд можно кликать как угодно быстро, все ок А вот в обратную сторону заметно медленнее
Andrei
Проблема именно в компоненте с кнопками, и поведения стрелки назад. Дебаунс тогда сделаю
ты говоришь, что виснит только тогда, когда ты быстро клацаешь на эти кнопки- скорее всего это происходит по той причине, что у тебя пытается прогрузиться очень много данных и перерисовать их. это все меняет дом и виртуальный и реальный. в итоге ты рисуешь для нескольких страниц дом
Игорь
Данные все в памяти, грузиться одна строка таблицы. Специально тестирую сам компонент пагинации
Andrei
Cancelable Promise?
не обязательно) да и не желательно, лучше блочить тупо кнопки, так как это правильнее(имхо)
Andrei
Данные все в памяти, грузиться одна строка таблицы. Специально тестирую сам компонент пагинации
скачай реакт дев тулы и посмотри что происходит при клацании на кнопке вперед и на кнопке назад, посмотри разницу. profiler таба, запиши то и это
Игорь
То есть, такое ощущение, что при быстром многократном нажатии, компонент не успевает перендериться и тогда происходит глюк при нажатии. Срабатывает другое событие с другой кнопки на странице
Daniil
Кто может помочь настроить реакт для add-in в office?
アレクサンダー・バキマトフ
Pauline
сек
Daniil
что за add-in и что за office?)
Макросы для ворда, екселя
アレクサンダー・バキマトフ
Макросы для ворда, екселя
реакт к этому отношения не имеет, вы не по адресу)
Ivan
на Visual Basic?
Daniil
Имеет)
アレクサンダー・バキマトフ
тогда это какая то дич, простите:D
Daniil
Если бы каждый человек писал, что он не знает ответа, то чат бы флудили жесцко, чего ты выделяешься?)
Andrey
Если бы каждый человек писал, что он не знает ответа, то чат бы флудили жесцко, чего ты выделяешься?)
если бы каждый человек, вместо конкретных вопросов, просто просил абстрактной помощи, то чат бы флудили жесцко (хотя, в целом, это передает обстановку в чате)
Dmitriy
гайз, а всегда нужно было в styled реакт-компоненты оборачивать для применения стилей? https://www.styled-components.com/docs/advanced#caveat
アレクサンダー・バキマトフ
даже если бы каждый человек конкретно задавал, то 99 проц игнорили, а 1 проц отвечали, тоже флуд😄
ну как видишь хочешь не хочешь, а флуд, так что зачем выделяешься?)
Andrey
даже если бы каждый человек конкретно задавал, то 99 проц игнорили, а 1 проц отвечали, тоже флуд😄
да нет, на конкретные вопросы - конкретные ответы, или ссылки хотя бы в чем тут можно помочь человеку - хз nometa.xyz
Igor
парни, работаю над оптимизацией производительности реакт-приложения, возник вопрос - возможно ли предотвратить повторный рендер детей при повтороном рендере родителя?
Igor
да, про неё знаю, спасибо, тогда немного перефразирую :) будут ли дети, у которых shouldComponentUpdate возвращает false, рендериться повторно, если рендерится родитель?
Виктория U
Нет, не будут
Igor
Спасибо! И ещё вопрос - при передаче массивов, функций и объектов не по ссылке - в shouldComponentUpdate они всегда не равны предыдущим соответственным значениям в пропсах. Нужно ли вручную предотвращать рендер в таких случаях, или есть ещё какой либо способ?
Igor
имею в виду клонированием) т.е. передаётся ссылка на новый объект, если уж совсем придираться)
I
имею в виду клонированием) т.е. передаётся ссылка на новый объект, если уж совсем придираться)
Тогда, конечно, в шудкомпонентапдейт сам руками проверяй эти объекты, их поля или что там нужно для задачи твоей, и предотвращай рендер, когда нужно.
I
само за тебя приложение не решит, хочешь ли ты перерендеривать в каждой конкретной ситуации
Max
Кто уже за саспенс шарит, как он поможет решить задачу прелодера на кнопке, если промис летит вверх а кнопка внизу?
Max
саспенс пока что только для подгрузки компонентов
Я это знаю. Вопрос основан на том, что я читал про нестабильную реализацию.
Anonymous
Не понимаю 😞 объясните, плиз. Делаю форму через redux-form. У одного инпута по вводу должны погружаться название городов и фильтроваться. Города получаю через api. Где это все должно храниться?
Roman
не только...
официально только
Александр
официально только
ну его можно использовать для подгрузки данных, вообще говоря ему пофиг что вы там делаете, данные грузите или компоненты
Anonymous
В store
хорошо))
🐙
хорошо))
получаешь данные -> пишешь в store -> конектишь компонент -> мапишься по данным
Roman
ну его можно использовать для подгрузки данных, вообще говоря ему пофиг что вы там делаете, данные грузите или компоненты
правильно, но для подгрузки данных нужно использовать react_cache, который еще unstable - и его даже не будут делать сразу
Roman
ну то есть конечно можно написать свою поделку, и ее даже делали, но это то что я называю "неофициально"
Александр
правильно, но для подгрузки данных нужно использовать react_cache, который еще unstable - и его даже не будут делать сразу
да не обязательно react-cache, зачем сразу его, можно свое сделать хоть сейчас, там никаких трудностей особых нет
Александр
да не обязательно react-cache, зачем сразу его, можно свое сделать хоть сейчас, там никаких трудностей особых нет
throw промиса и Suspense ждет резолве и перерендеривает компокент который кинул его, магии нет там (https://github.com/facebook/react/blob/master/packages/react-cache/src/ReactCache.js#L159)
Roman
дада, я знаю как оно делается, просто это "не поддерживается официальной докой"
🤴👷‍♂️🦸‍♂️🧚‍♀️
Привет. У меня есть дефолт роуты и роуты через React.lazy. После добавления вторых у меня отвалился роут на всевозможные пути. Как такое фиксить?
Александр
дада, я знаю как оно делается, просто это "не поддерживается официальной докой"
ну этот механизм не полагается ни на какие нестабильные вызовы API, так что можно использовать если хочется