Oleg
wheelEl.current.dispatchEvent(new KeyboardEvent('keydown', { key: '16' }));
не работает. пытался передать число. ничего
Timofey
как в formik убрать ошибку из поля?
Oleg
wheelEl.current.dispatchEvent(new KeyboardEvent('keydown', { key: '16' }));
вообще, event повешен так useEffect(() => { const wheelAction = (e) => { wheelEl.current.dispatchEvent(new KeyboardEvent('keydown', { // key: 'Shift', keyCode: 16, })); // e.preventDefault(); // if (wheelEl.current.scrollLeft < scrollPos) { // wheelEl.current.scrollLeft -= 50; // } else { // wheelEl.current.scrollLeft += 50; // } // // setScrollPos(wheelEl.current.scrollLeft); // scrollPos = wheelEl.current.scrollLeft; }; wheelEl.current.addEventListener('wheel', wheelAction, false); return () => wheelEl.current.removeEventListener('wheel', wheelAction); }); это правильно?
Dmitry
что юзаете для виртуализации ?
Vladislav
что юзаете для виртуализации ?
смотря какой, зачем, цели какие
Cenator 🐈
React-window
Dmitry
React-window
Говно же. Не?
Vova
ребят, в одном компоненте может быть и редакс и дфолтный стейт?
Andrei
откуда вообще такое мнение
Dmitry
откуда вообще такое мнение
зачем мне ему передавать высоту блоков и ширину окна ? А если динамик все
Mikhail
скрол влево.
это где такое поведение?
Oleg
это где такое поведение?
но мне уже сказали, что так лучше не делать, а делать через scrollLeft
Vova
Разумеется
плохая практика всю локику держать в редаксе?
Mikhail
везде же.
в убунту в хроме ничего от зажатого шифта не менятся
Vova
каждый екшен впадло прокидывать, там открылась модалка
Александр
Вопрос был про стейт
Vova
зачем это глобально
Vova
это новый вопрос
Vova
у меня есть стейт modalIsOpen на какой то там страничке, зачем мне это хранить в глобальном стейте в редаксе?
King
у меня есть стейт modalIsOpen на какой то там страничке, зачем мне это хранить в глобальном стейте в редаксе?
Можно сделать фишку с глобальной модалкой через порталы и состояние редакс dispatch(aModalOpen()); Вот так открывается, без надобности импортить модалку в каждое место где она нужна
King
порталы?
React.Portal
Vova
понял
🤴👷‍♂️🦸‍♂️🧚‍♀️
Подскажите как создавать новые ноды при получение нового значения из пропсов. Код элемента - https://jsfiddle.net/b46psn1L/ Это все работает. Но есть сайд эфекты - создается новое поле при любом клике на любую кнопку и значение берется из прошлых пропсов.
Александр
у меня есть стейт modalIsOpen на какой то там страничке, зачем мне это хранить в глобальном стейте в редаксе?
Никто не обязывает, можете модальное окно в любом месте отрисовать используя React.createPortal, все зависит от задачи
Viacheslav
Какой вариант лучше?
Vova
Никто не обязывает, можете модальное окно в любом месте отрисовать используя React.createPortal, все зависит от задачи
спасибо, понял вопрос был не считают ли не правильным тоном юзать и редакс и реакт стейты в одном проекте, теперь все ясно
Vova
и про порталы спасибо
Александр
React.Portal
createPortal все таки уточню
Александр
Хотя Гугл найдёт
King
createPortal все таки уточню
Благодарю, с телефона не смог чекнуть доку
Igor
Так, теперь я с компа и задам еще раз вопрос но уже с подробной ошибкой
Igor
Использую create-react-app, react-test-renderer, пытаюсь написать тесты, но при запуске jest ошибка
Igor
Igor
Сам тест примитивный
Андрей Чайковский
Друзья, в styled можно как-то множественное наследование сделать?
Виталий
Коллеги, вопрос по стэку TS React Redux. Подскажите как по бест практис нужно прописывать типы экшнов в редьюсере? Спрашиваю вот почему: В тех примерах которые я нашел на сайте редакс приводится такая реализация: Мы как бы принимаем что конкретный редьюсер будет работать исключительно с конкретными экшнами, и тип экшна указывается как юнион тип всех возможных входящих экшнов. Но почему так? Ведь по факту в каждый редьюсер попадает каждый экшн, а следовательно строго говоря мой тип не соответствует действительности. Кроме того в любой момент может возникнуть ситуация такая что я в этом же редьюсере буду вынужден обратать какой-то новый экшн который задействован в нескольких редьюсерах. И что тогда придется городить кучу юнион типов? Это же неудобно? Есть может какой-то универсальный подход? UPD Примеры про которые я говорю взяты отсюда https://redux.js.org/recipes/usage-with-typescript https://codesandbox.io/s/w02m7jm3q7
King
Друзья, в styled можно как-то множественное наследование сделать?
Чтобы один компонент наследовался от двух?
King
Ага
Есть такой костыльный способ Если не ошибаюсь, если привести в строку стайлед, мы получим класснейм Можно сделать типа так: className={'' + StyledComponent1 + StyledComponent2}
Kurzdor
Соооовааааа
Андрей Чайковский
Не точно, под рукой нет компа чтобы проверить
Сравнительно давно пользуюсь styled, но только сейчас возникла такая потребность, мб так вообще нельзя делать, но интуитивно написал styled(S1, S2)
Андрей Чайковский
Работает?
Позже попробую
Andrey
Позже попробую
ну тут скорее const B = styled(A) const C = styled(B)
King
ну тут скорее const B = styled(A) const C = styled(B)
Но это не множественное наследование, который нужен был оп, это обычное наследование
Madiyar
Как вам redux-observable?
Mike
Друзья, в styled можно как-то множественное наследование сделать?
Вынести в css`...` оба, в оригинальные просто вставить внутрь эти цсс, а в наследуемый оба?
Mike
Composition > inheritance, все дела
Сергей
Всем привет. Такая проблема у меня. Хочу динамически подгружать модули. В общем, по виду, все работает. Для "добавления" reducer модуля использую replaceReducer, для добавления saga модуля использую export function* rootSaga() { yield all([fork(mainSaga)]); yield takeLatest(ADD_NEW_SAGA, add_new_saga); } export function* add_new_saga({ payload: { saga } }) { yield all([fork(saga)]); } Но вот в чем беда, не могу разобраться... Если я после подключении первого модуля вызываю dispatch, который "дергает" saga и в последствии меняю state, то ПОСЛЕ подгрузки второго модуля происходят dispatch сделанные в предыдущем модуле. При это saga не дерагется, просто откуда-то прилетают actions, которые были вызваны ранее... и именно в таком же кол-ве... Что можете посоветовать?
Сергей
выходит, что если я в перовом модуле, что-то добавил в state, то это же добавиться (в state первого модуля) при открытии второго модуля
Mike
А зачем делать yield all на массив из одного элемента?
Сергей
согласен, лишнее, но сути, все равно не меняет
Igor
я что-то туплю, как можно игнорировать первый элемент, который неиспользуется? А то варнинг в консоль сыпется
Mike
Я думал может хитрость какая
Mike
А по поводу вопроса, по логгируй первый модуль, мб он у тебя второй раз тоже перегружается заново
Mike
Иначе странно
Mike
И может ещё реплейс редьюсер себя плохо ведёт, попробуй на несколько сторов разбить
Сергей
если бы он перезагружался, то дергалось бы всё, что дергается при его первоначальной подгрузке - а так просто
Сергей
при этом в REDUX консоли хрома нету экшенов этих повторных, а консоль лог срабаывает в reducer первого модуля
Сергей
Тогда скорее всего в реплейс редьюсер дело, да
Ну я вот так делаю let modules = []; export function initModule({ saga, reducer: { name, reducer } }) { if (modules.includes(name)) { return; } store.dispatch(add_new_saga(saga)); store.asyncReducers[name] = reducer; store.replaceReducer(createReducer(store.asyncReducers)); modules.push(name); } А в reducer корневом export default function createReducer(asyncReducer) { return combineReducers({ monitoring, notifications, global, userSettings, ...asyncReducer, }); }
Mike
Я сам никогда не юзал это, просто предполагаю, что там проблема. Несколькими сторами можно проверить, если на них сработает -- точно в этом дело
Mike
Ну не реплейс редьюсер, а новый стор со своим
Mike
Если первые консоли не стригерятся -- дело в реплейс редьюсере
Cheslav
как в CRA без eject можно поменять папку начала сборки? хочется все в client перенести