Valentin
и легко ломается
{ React.cloneElement( props.children, { onClick: handleClick } ) } Как такое может сломаться? Хотя... да не понятно к чему будет именно клик? Или только если компонент который копируем хотя бы ожидает пропс onClick
ssshhh
function proverka(number) { let index = expanded.indexOf(number) index == -1 ? setExpanded([...expanded,number]) : expanded.splice(index, 1); } при клике передаю ключ ноди если уже есть до должно удалиться и наоборот доваляеться норм но вот удаление барахлит в чем проблема?
Андрей
Скажите пожалуйста, почему Link из react-router-dom рендерит компонент вместо создания ссылки на компонент? Какую часть кода надо предоставить для решения?
voix
splice мутирует
Я думаю, он знает и поэтому его использует.
Андрей
Основной App вот, на предыдущем скрине компонент ClientsList
ssshhh
Да
Yury
зачем пихаешь туда Component
Андрей
зачем пихаешь туда Component
Так чтобы по ссылке он открывался, или не так надо?
🦜
какая команда у yarn чтобы обновить package.json на latest версии?
voix
Да
Ты в первом случае ставишь стейт, а во втором пытаешься напрямую мутировать. Ставь через setExpanded тоже.
Maksim
Да
ну так а во втором случае не вызывается setExpanded
🦜
yarn upgrade-interactive
чот не меняет версии она в файле
Андрей
нет, только to=‘/url’
А, понял, компонент надо в Route передавать, а в линке ничего не надо, протупил)
voix
Да
И лучше сделай через filter -_-
🦜
yarn upgrade --latest
Тоже самое(
🦜
скачивает зависимости, но не изменяет package.json
🦜
в yarn.lock меняет
а мне надо package.json
Yury
странно, вроде -interactive менял всегда (
Андрей
скачивает зависимости, но не изменяет package.json
https://www.npmjs.com/package/npm-check-updates Есть такое расширение для npm, которое ставится глобально и которое умеет обновлять только package.json файл. Может есть аналог на yarn, я не в курсе, но если вам надо только обновить package.json, то вполне подойдет
Андрей
типа им обновляете, yarn-ом устанавливаете
SᑎOᙖOᖇᑎ
И лучше сделай через filter -_-
теперь совсем не то(пишу с другого аккаунта) раньше идея в том била что у меня есть ноди з родителем при нажатии на которого свертивались и обратно дети вот я при клике сначала добавляю в массив и делаю проверку, если в масиве есть то показиваю и наоборот но сейчас когда я сделал как вот подсказали то в массиве есть только 1 елемент, на которий кликнули(тоесть свертиваеться только одна нода)
SᑎOᙖOᖇᑎ
Покажи как сделал. Не уверен, что ты сделал так, как посоветовали.
function proverka(number) { let index = expanded.indexOf(number) index == -1 ? setExpanded([...expanded,number]) : setExpanded(expanded.splice(index, 1)); }
BADbonus
Доброго времени суток, может кто-нибудь подсказать free компоненты отсносящиеся к geoautocomplete? Т.е. чтобы пользователь вводил в input название улицы и появлялись подсказки по его вводу какие есть улицы, пока нашел только AlgoliaPlaces, но этот не совсем подходит. Заранее спасибо.
voix
function proverka(number) { let index = expanded.indexOf(number) index == -1 ? setExpanded([...expanded,number]) : setExpanded(expanded.splice(index, 1)); }
Это потому что splice возврщает не измененный массив, а массив с удаленными итемами.
voix
function proverka(number) { let index = expanded.indexOf(number) index == -1 ? setExpanded([...expanded,number]) : setExpanded(expanded.splice(index, 1)); }
Сделай setExpanded(expanded.filter(id => id !== number)) и попробуй понять почему это работает, а предыдущие варианты нет.
Oruj
а для чего собственно нужен CssBaseline?)
SᑎOᙖOᖇᑎ
Сделай setExpanded(expanded.filter(id => id !== number)) и попробуй понять почему это работает, а предыдущие варианты нет.
спасибо у меня била попитка с ним, но когда я напрямую делал, а не через setState да, понял, фильтер возврощает масив елементов которие пройшли проверку блин
Denis
function proverka(number) { let index = expanded.indexOf(number) index == -1 ? setExpanded([...expanded,number]) : setExpanded(expanded.splice(index, 1)); }
потому что после двоеточия ты во-первых мутируешь стейт, а во-вторых ставишь в него только то, что удалил
Indra
добрый день, уважаемые, подскажите пожалуйста, как правоверно реализовать следующий функционал? есть степпер (parent component), в нем пара шагов. 1 шаг - выбрать список (child component #1). 2 шаг - отобразить выбранный список (child component #2) из прочитанных рекомендаций понял, что не комильфо апдейтить стейт парент компоненты, но как сделать иначе - не знаю. может есть какой-то волшебный способ этого добиться?
Yury
всегда в стейте родителя такое делаю и не считаю это не комильфо
Denis
да вот я им и пользуюсь
тогда по поводу комильфо не комильфо почитай про компоненты-конейнеры и презентационные компоненты
Philipp
Ребят, проясните пожалуйста, а то я что-то запутался. Я хочу обратиться к api из функционального компонента. Через connect передаю в компонент сам dispatch (export default connect(mapStateToProps, dispatch => ({dispatch}))(DicomPrintersList);). Теперь, в моем компоненте я могу через props.dispatch() выстреливать любые actions Так? В хуке useEffect() вызываю : useEffect(() => { props.dispatch(fetchPrinters()); }); А fetchPrinters представляет собой вот такую вот конструкцию (см. скриншот)
Indra
А где такое прочитал?
да собственно на реакт сайтике.
Philipp
файл качать (
Эмм, чтоб людям, кому не интересно не загаживать чат.
Indra
тогда по поводу комильфо не комильфо почитай про компоненты-конейнеры и презентационные компоненты
а это независимо от выбранного подхода, функции и классы поддерживаются?
Евгений
Привет. Подскажите по redux, объединил несколько редьюсеров через combineReducers, могу ли я как-то получить доступ к стейту который относится к другому редьюсеру? Например: export default combineReducers({ page, user }) как в page получить данные user'а?
Igor
у тебя за счет connect по дефолту в пропсах должен быть диспатч, если я не ошибаюсь
Philipp
а в чем вопрос, собственно?
Ах, да, прошу прощения: Почему падает все вот с такой ошибкой?
Igor
Ах, да, прошу прощения: Почему падает все вот с такой ошибкой?
ну пишет что в самом экшене у тебя нет вызываемого метода
Philipp
Вот сам Action Creator: const fetchDicomPrintersPending = () => ({ type: Types.FETCH_DICOM_PRINTER_PENDING });
Igor
что у тебя лежит в ACTIONS?
Ivan
зачем это?
человек, который предложил идею контейнеров и презентационных компонентов написал, что это устаревшая концепция зачем что?
Oleksandr
Евгений
Никак. Если это нужно, значит что-то сделано неправильно на более высоком уровне.
правильный выходит в мидлваре в соответствующий экшн добавить нужную инфу ?
Oleksandr
Всем привет, вылетает ошибка, кто может подсказать в чем проблема ? TypeError: Cannot read property 'toUpperCase' of undefined
Oleksandr
Denis
человек, который предложил идею контейнеров и презентационных компонентов написал, что это устаревшая концепция зачем что?
я там вижу только то, что у него изменились взгляды и он больше не ПРЕДЛАГАЕТ использовать эту концепцию или у нас разный английский?
Oleksandr
Igor
т.е connect(mapStateToProps, {fetchPrinters})
Yury
o.title либо searchQuery у тебя undefined
Denis
у нас разный русский предлагаю забить
последнее слово скажу Это в любом случае надо знать, даже если в народе оно устаревшее, ибо с вероятностью 80% на проекте, с которым человеку придётся работать в ближайшие пару лет как минимум, будет этот подход
Philipp
что у тебя лежит в ACTIONS?
Да, действительно, надо было обращаться через ACTIONS.dicomActions.fetchDicomPrintersPending(), но теперь что-то не так, оказывается, со структурой стейта... Ладно, полезу дальше разбираться. Спасибо.
Philipp
там же можно на хуках сделать это, без connect. ну и success и error опрятнее убирать в thunk
Я прям ну совсем новичек в этом всем... Поэтому если бы ты мог немного понятнее объяснить, я был бы весьма признателен.