Daniil
Тогда верно понял. Такой способ уместен. Пытался одно время втащить такое в прод, но код усложнился, а профита было мало. По итогу пришлось бы для новых разрабов указывать что это за дичь
Daniil
но такое хорошо помогает если залетают либы, которые не должны быыть на уровне сср и парсинга
Daniil
Возможно и в этом конечно дело. Надо будет пересмотреть подход, тяжело было вообще такую идею впихивать в готовый проект особенно. Ведь иногда даже неочевидный момент не всегда не нужен для сео. Общение с заказчиком, ужс
Daniil
Ну все тоже самое. Такое скорее у всех, кто поддерживает сео и учитывает ранжирование. Вот и приходят такие идеи
Daniil
Да, это так. Но даже выигранная секунда рендеринга иногда обходится горелой жопой. Особенно если тебя просто позвали "помочь с оптимизацией"
Daniil
У нас это по принципу. Быстро (по трудозатратам) — делаем. Нет — до лучших времён
Да, этот подход имеет место. Правда вот уже второй раз вижу такой проект, где откладывали. По итогу банально даже конфиг вебпака не был нормально настроен, потому что на тот момент цель была запустить проект и начать делать.
Daniil
Один цсс файл, один жс файл и такое разгребать на новом проекте просто пиздец
Daniil
🙃
Sergey
Я вообще думал, сейчас на React + TS пересядем, да как вжууух!!! Сообщество, готовые решения, всё на подносе уже. По факту: Только 2-3 недели убил на поиск стейт менеджера. Из сообщества человек 10-15, с которыми можно вести диалог или что-то спросить.
Китикет
На эффекторе конечно остановились?)))
Китикет
Нет, он не подошёл.
Реатом? Мобх? А в чем проблема была если не секрет?
Daniil
Байты, бойлерплейт. Возможно.
Daniil
Я в плане выбора вообще
Daniil
Больная тема при открытых проектах серчить либы
Sergey
Реатом? Мобх? А в чем проблема была если не секрет?
Reatom ❤️ Самый крит был, что SSR не мог "нормально" завести + ряд особенностей апи эффектора (просто уже вижу жёсткие гайдлайны и тщательные проверки проектных PR) https://t.me/reatom_ru/7874
Sergey
Байты, бойлерплейт. Возможно.
+++ это один из факторов тоже был
Sergey
Больная тема при открытых проектах серчить либы
Да, поэтому выбрал reatom (т.к. это практически redux, только лучше).
Kurzdor
да и апи такое что вкатится можно за 15 минут ладно, всем спокойной ночи народ
Sergey
Да, поэтому выбрал reatom (т.к. это практически redux, только лучше).
Т.е. redux все знают. Экшены, редьюсеры, стор, субскрайд, диспатч — фигач
Kurzdor
мне самое что нравится то что санки из под коробки в реатоме
Kurzdor
и еще нужно сделать declareAsyncAction, но это уже скорее можно вынести в store/utils
Китикет
Интересно, а почему declare, а не create?)
Sergey
Интересно, а почему declare, а не create?)
https://reatom.js.org/#/faq?id=why-declare
Китикет
Арталар же вроде больше императивный код любит, а тут declare, которое имеет целых 6 общих букв со словом declarative в начале
Китикет
https://reatom.js.org/#/faq?id=why-declare
Понятно, короче мне надо не мучить тебя вопросами и самому посмотреть)
Sergey
Sergey
Арталар же вроде больше императивный код любит, а тут declare, которое имеет целых 6 общих букв со словом declarative в начале
Вначале было createAtom, createActionCreator, createStore Второе было сильно длинным, а атомы не имеют стейт (это только описание как он себя должен вести). declareAtom, declareAction, createStore Получилось так
Китикет
Ладно, спокойной всем) Спс за дискуссии
Sergey
Ну я посмотрел по ссылке, там из 1 пункта стало понятно почему так
вообще есть всёже мысли сделать просто atom/action/createStore но пока чисто мысли и черновики )
Китикет
вообще есть всёже мысли сделать просто atom/action/createStore но пока чисто мысли и черновики )
Ну с одной стороны хорошо, с другой не очень мне нравится когда функции с именами существительных) Но иногда уместно
Китикет
Кстати на тему, почему не mobx (правда это недавно осознал) https://t.me/react_js/798977
Да, я в тот момент в чатике был) Видел) Спокойной ночи в общем, у меня уже дико поздно чтобы продолжать общение)
Vitalii
как обратиться к стилям текущего компонента?
Vitalii
я знаю, что так не работает, просто, чтобы вы понимали, что я имею ввиду
Vitalii
ты хочешь из dom считать?
да, я знаю, что можно сделать объект и его передать атрибуту стайл, но может можно как то без этого
Sergey
да, я знаю, что можно сделать объект и его передать атрибуту стайл, но может можно как то без этого
Сохрани ref на элемент, и сделай обработчик на даблклик в котром сделаешь что тебе нужно. Но это не трувей.
Vitalii
спасибо, сейчас попробую
Sergey
спасибо, сейчас попробую
https://ru.reactjs.org/docs/refs-and-the-dom.html
Sergey
https://ru.reactjs.org/docs/hooks-reference.html#useref и это
Vitalii
спасибо, помогло)
Pavel
ребят в app.js есть функция, модалка, и во многих компонентах есть кнопка ее вызывающая, как прокинуть триггер какой нибудь в каждый компонент чтоб выполнять функцию?
Pavel
function App() { const [modal, setModal] = useState(null); const handleForm = () => { try { setModal(<FormModal />); } catch (e) {} }; const appState = { setModal, handleForm }; return ( <ThemeProvider theme={theme}> <AppContext.Provider value={appState}>{modal} в компоненте я пробую получить как const handleForm = useContext(AppContext); верно?
Евгений
Зачем try/catch, appState с дублирующим функционалом? Но в целом смысл правильный
Евгений
Модалки также лучше заводить через портал, т.к с z-index легче не промахнуться
Pavel
ну если даже сделать const handleForm = () => { setModal(<FormModal />); }; в компоненте я не понмял как мне на onClick повесить мой handleForm ((
Евгений
Можно setModal передавать, зачем доп функция делающая тоже самое?
Евгений
Тебе лучше самому это прочекать, это уже синтаксис
Pavel
у меня к примеру 10 компонентов, где есть кнопка, я пытаюсь понять как лучше сделать вызов чтоб не дублировать код )
Pavel
нужно в каждом компоненте сделать импорт FormModal и делать setModal(<FormModal />) ?
Sergey
нужно в каждом компоненте сделать импорт FormModal и делать setModal(<FormModal />) ?
const { showModal } = useContext(mySuperCreativeModal} <button onClick={showModal} /> Примерно так у тебя должно получиться. Стей менеджер, event, контекст ± одинаково визуально будет выглядеть
Pavel
ок попробую
Евгений
если есть спецы по редакс форм, подскажите, 2й день сижу с этой проблемой суть: есть редакс форм и есть такая кнопка const Button = () => { const WrappedSome = () => <div>Жми</div>; return ( <div onClick={() => alert('CLICK!')}> <WrappedSome/> </div> ) }; Если на нее нажать покажется алерт. Вся проблема в том, что если в данный момент фокус находится в поле формы, события клик срабатывает только со 2го раза
Евгений
по дебагеру видно что фокус срабатывает 2 раза при onBlur, в коде самой библиотеки еще не полностью разобрался, возможно есть пропы, вроде (touchOnBlur, touchOnChange), которые регулируют этот момент при инициализации.
Евгений
Еще можно выставить срабатывание на следующий tick <Field onBlur={e => { e.persist(); setTimeout(() => this.props.input.onBlur(e);},0 );}} /> Но в большом приложении сетТаймаут нужно увеличивать, и это крайне костылевое решение
Dath
доброе утро господа нужно помш с добавлением данных в форму через function isCheck(name) { return document.querySelector('input[name="' + name + '"]:checked'); } вот как дальше быть не понемаю мне надо что бы эти данные выводились в эту форму <input class="inp-lk-sk" type="number" name="vivod" value="" placeholder="Сумма вывода">
Pavel
тут чет я или мне поспать пойти или хз.. app.js - const [modal, setModal] = useState(null); const appState = { setModal }; <AppContext.Provider value={appState}>{modal}</AppContext.Provider> в компоненте const setModal = useContext(AppContext); и setModal("text"); получаю `× TypeError: setModal is not a function`
Pavel
если писать сразу так <AppContext.Provider value={setModal}> то все работает нормально.. =\
Pavel
удивляет то, что в других проектах передавал кучу всего таким образом.. те const appState ={state1, state2} и AppContext.Provider value={appState} и там се работает )
Dath
Читайте доку реакта про стейт. Вам не нужно обращаться к document
спасибо нашел решение оказалось в самой форме надо просто прописать onclick="vivform.vivod.value=this.value"
Dath
Это точно реакт?
нет реакт не понадобился можно было банально оказывается в html и js сделать
Ivan