Valentin
да, компонент обернут в connect от редакс-реакта. листинг компонента: export default class extends React.PureComponent { render() { const { items, itemsInProcess } = this.props; return ( <> {`itemsInProcess: ${itemsInProcess.join(',')}`} {items.slice(0, 3).map(item => { const clicka = () => this.props.onChangeStatus(item.id, 'Moderation') return ( <div key={item.id}> <button onClick={clicka}>{item.name}</button> </div> ); })} </> ) } } я вижу, что коннектор принимает новые значения, но реакт-компоненту пох
Daniil
у тебя пьюр
Daniil
ты не туда воюешь
Valentin
с React.Component идентично я надеялся что пьюр будет при любых вариантах заставлять перерендериваться.
Anonymous
Кто-нибудь работал с вертикальным рутером? То есть у тебя spa, разные страницы и анимированные переходы из-за чего создается ощущение лендинга
Bogdan
react-helmet кто юзает, подскажите в noscript кроме строки можно как то передать не строку?
Anonymous
скрол + хистори апи
А как хендлить скролл правильно?
Anonymous
Есть какие-нибудь решения?
Anonymous
Двойной свайп вниз и все такое
Andrii
А как хендлить скролл правильно?
Получаешь текущую точку на экране и в зависимости от этого, включаешь правильные роуты. Что-то типо privateRoute в который ты будешь передавать значение стейта: твоего положения на странице. А внутри этого прайватроута условия, если такое значение, такой роут, если такое, другой.
Valentin
а ты это где видишь?
в консоле, мониторю свою жи
Andrii
А history.push - будет перерендеривать твою страницу, вроде не супер решение.
🅅aleriy
в консоле, мониторю свою жи
конкретнее, как ты мониторишь это дело? в функции рендер родительского компонента?
Daniil
Скинь в песочнице
🅅aleriy
в массив небось добавляешь элементы через push?
Valentin
Скинь в песочнице
https://pastebin.com/y0QY6A4s
Daniil
Это не песочница)
Valentin
в массив небось добавляешь элементы через push?
да, но это делается в редьюсере.
Daniil
https://pastebin.com/y0QY6A4s
И что мы тут должны увидеть? Ты уже показывал это
🅅aleriy
да, но это делается в редьюсере.
так ты сам редьюсер покажи, в нем же ошибка
Valentin
Это не песочница)
пощади, ну я все удалил лишнее, здесь как бэ понятно если посмотреть на код.
Valentin
так ты сам редьюсер покажи, в нем же ошибка
case ADD_ITEM_IN_PROCESS: { const itemsInProcess = state.itemsInProcess; itemsInProcess.push(payload); return { ...state, itemsInProcess, }; }
Daniil
о боги
🅅aleriy
ну вот и ошибка 🙂 пуш нельзя делать
Daniil
тут даже не в пуше дело
Daniil
а все еще хуже
Ilya
case ADD_ITEM_IN_PROCESS: { const itemsInProcess = state.itemsInProcess; itemsInProcess.push(payload); return { ...state, itemsInProcess, }; }
начать надо с того, что в редюсерах вообще не должно быть сайд-эффектов
Valentin
воувоувоу
мб не верно и наверное нужно сделать в экшене, а в редьюсер отдавать готовый набор данных? Я неделю работаю с редаксом, это уже было до меня написанно и я ничерта не понимаю, почему не работает. Даже если в пуше дело, я ведь через дев тулз и при консоли вижу, что в коннектор передаются обновленные данные, почему они не тригирят изменения компонента? Скажите, что здесь плохо и я скажу это автору кода
🅅aleriy
Daniil
А теперь посмотри на свое еще раз
🅅aleriy
return { ...state, itemsInProcess: [...itemsInProcess, payload], }
Ilya
мб не верно и наверное нужно сделать в экшене, а в редьюсер отдавать готовый набор данных? Я неделю работаю с редаксом, это уже было до меня написанно и я ничерта не понимаю, почему не работает. Даже если в пуше дело, я ведь через дев тулз и при консоли вижу, что в коннектор передаются обновленные данные, почему они не тригирят изменения компонента? Скажите, что здесь плохо и я скажу это автору кода
верно мыслите комрад - редюсер принимает данные и мутирует стейт имутабельно - все, больше там ничего быть не должно - никаких нормализаций, никакого препроцессинга и тем более извлечения чего бы то ни было, как и вызовов каких бы то ни было методов (так как нет гарантий что они в свою орчередь опять таки не приведут к экшену и мутации стейта)
Igor
Помогите плиз, при вводе значения scanf выдаёт предупреждение _CRT_SECURE_NO_WARNINGS, Вариант с # define не работает
Oleg
вопрос по axios. когда запрос идёт в catch? при кодах отличных от 200?
Oleg
Все красные статусы.
а какие статусы "красные"?
Mikhail
Поделитесь решением?
мне кажется оно довольно специфическое для моего текущего проекта, но могу в личке показать что как работает
Denis
Не важно кто менял, главное правильно сделать
case ADD_ITEM_IN_PROCESS: { return { ...state, itemsInProcess: [...state.itemsInProcess, paylaod], }; }
Andrii
Народ, кто знает, как ресетнуть инпут, у меня в инпуте есть пропса, initialValue={this.state.value} это ant-design, так вот если стейт меняется, вэлью там не сетится, сетится только один раз
Ilya
а как мне в экшене иметь данные текущего стора? Или где то сверху их брать и тащить в экшен вместе с новыми данными и в нем логику писать?
ну варианта 2 - закладывать нужные данные в payload - там где вы экшен вызываете - там вы можете подключенное состояние иметь второй вариант это использовать action creator - тогда на вход криэйтора вы будете получать dispatch и метод getState кароч - почитайте вот например https://stackoverflow.com/questions/35667249/accessing-redux-state-in-an-action-creator
Oleg
Все красные статусы.
как это хотя бы гуглить?
Vladimir
а какие статусы "красные"?
внутри у аксиоса XMLHttpRequest
Denis
как это хотя бы гуглить?
https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP#%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2
Valentin
Спасибо большое вам!!!! Все осознал. Но сказали, что логика работы с объектами должна быть в редьюсере, бэ
Andrii
там есть метод специальный setFieldValue кажется посмотри доку по getFieldDecorator для форм
Да, только вот это метод у компонентов формы, а у меня нихера не форма.
Oleg
по идее 4хх, 5хх, но я не уверен
🅅aleriy
Да, только вот это метод у компонентов формы, а у меня нихера не форма.
ну так если у тебя не форма почему ты юзаешь initialValue? а не defaultValue?
Andrii
Я использую defaultValue
Michael
всем привет. если реакт с тайпскриптом юзать, то вместо prop-types обычно юзают интерфейсы?
Andrii
ну так если у тебя не форма почему ты юзаешь initialValue? а не defaultValue?
Он если стейт меняется, он не сетится повторно почему-то.
🅅aleriy
Да, только вот это метод у компонентов формы, а у меня нихера не форма.
ну и для обычных инпутов там есть сыойство allowClear которое добавляет крестик для очистки поля
🅅aleriy
Он если стейт меняется, он не сетится повторно почему-то.
так ты выбирай, либо ты делаешь контролируемый инпут, либо нет контролируемый требует установки value/onChange
Andrii
ну и для обычных инпутов там есть сыойство allowClear которое добавляет крестик для очистки поля
Так а зачем мне крестик? У меня задача сделать кнопку Reset, которая очищает все value инпутов.
Nurdan
Когда я начинаю печатать в инпуте, после введения первого символа в инпуте компонент скролится вверх, кто сталкивался? Как исправить?
Denis
Угу
<input initialValue={this.state.value} value={this.state.value} onChange={handlerFunc} />
🅅aleriy
Так а зачем мне крестик? У меня задача сделать кнопку Reset, которая очищает все value инпутов.
ну тогда для каждого поля определи value и onChange, а для очистки нескольких полей из стейта протаскивай пустые значения value
Ilya
Народ, кто знает, как ресетнуть инпут, у меня в инпуте есть пропса, initialValue={this.state.value} это ant-design, так вот если стейт меняется, вэлью там не сетится, сетится только один раз
там есть пропсы initialValue и value так вот установка значения во второе во время рендера передается в рантайме, значение первого ипользуется только для первичной инициализации
Denis
<button onClick={[this.]resetInput}/> resetInput = () => { this.setState(() => {value: '' || DEFAULT_VALUE}}) }