Sergey
Да
Oleg
или стейт компонента
Oleg
создаеш экшн криейтор
Oleg
и в него передаеш id обекта
Oleg
в редюсере прописываеш что будет при срабатывании экшина
Oleg
и при клике вызываеш этот экшн
Oleg
в редюсере при срабатывании экшина меняеш массив в стейте
Oleg
это вкраце) а так димыча посмотри у него это разжовано на 100 видеор
Sergey
Это я все делаю проблема в редюсере как написать к примеру ...state, и таск у меня массив объектов и id приходит с экшина как это id прикрутить в редюсер
Oleg
скинь код редюсера
Max
Спасибо, Олег
Sergey
Я его не написал, я не знаю как сделать
Sergey
Сейчас скину подробнее
Oleg
пж
Sergey
let initialState = { tasks: [ {id: 1, label: 'first task', important: false}, {id: 2, label: 'second task', important: false}, {id: 3, label: 'third task', important: false} ] вот мой стейт export const importantTaskActionCreator = (id) => { return { type: "IMPORTANK-TASK", id } }; приходит id по клику и как это все записать в редюсер и копирование стейта
Oleg
напиши функцию редюсера
Oleg
каркас
Sergey
let reducer = (state = initialState, action) => { switch (action.type) { case ADD_TASK: let newTask = { id: state.tasks.length + 2, label: state.newTaskText, important: false }; return { ...state, tasks: [...state.tasks, newTask] }; case DELETE_TASK: return { ...state, tasks: state.tasks.filter((task) => { return task.id !== action.id }) }; case "UPDATE-TASK": return { ...state, newTaskText: action.labelNewTask }; default: return state; } };
Oleg
отлично
Oleg
добавь туда case для экшина
Sergey
та я просто не пойму логику я уже пробывал и через фильтр не могу вкурить что писать содержимое
Oleg
добавть кейс для экшина, сделай каркас
Oleg
дальше разберемся чо дописать
Sergey
case "IMPORTANK-TASK": return { }
Oleg
отлично
Oleg
добавь в карска еще ...state
Oleg
и будем думоть как сделать
Oleg
😆
Sergey
лол))
Sergey
блин мне кажется ты уже рофлишь)
Oleg
не
Oleg
ща придумаем
Oleg
return { ...state, tasks: [...state.tasks.filter( item => item.id != action.id)] }
Oleg
это все таски кроме нужного
Sasha
Здравствуйте. Кто поможет? Есть массив объектов и есть такая штука let search = guestList.filter((item) => item.searchIndex.toLowerCase().indexOf(query) !== -1);, которая фильтрует массив на совпадение по searchIndex как сделать что бы она искала по всем полям, а не только по полю searchIndex
Sergey
Oleg это да, но мне надо отображать все таски и к примеру чтоб у одного поменялось значение important На true)
Oleg
let newTask = state.tasks.filter( item => item.id == action.id)[0]; return { ...state, tasks: [ ...state.tasks.filter( item => item.id != action.id), { ...newTask, important: true } ] }
Oleg
думаю так
Sergey
а разве в case переменную получится создать?)
Oleg
да, на изи
Sergey
да, на изи
хехе, благодарю все получилось)))
Sergey
Oleg а можешь обьяснить что это "[0]" делает
Владимир
первый элемент офильтрованного массива
Oleg
filter возвращает массив
Oleg
но мы знаем что там один элемент
Oleg
а значит у него индекс 0
Oleg
вот к нему и обращаемся
Sergey
понял, спасибо большое!)
Max
Короче. Проблема в том, что пропсы приходят только при вызове модального окна
Max
если происходят изменения внутри модали, и меняется стейт, новые пропсы приходят только в mapStateToProps
Max
а в саму компоненту нет
Max
то есть компонента получает пропсы только при вызове модали
Max
учитывая что у меня родитель это классовая компонента, может мне стоит использовать какойто метод жизненного цикла, чтобы он ререндерил все внутри return () при любом изменении стейта?
Сергей
Мучай компонент дид апдейт или юз эффект,. Заставляй реагировать на изменение пропсов..
Petrov
Странный баг возник, все элементы формы <input>, <textarea> и <button> неактивны. Перечитал доку, не вижу причину(
Max
componentWillReceiveProps() не пойдет?
Сергей
componentWillReceiveProps() не пойдет?
Считается морально устаревшей...
Tatev
Друзья, всем привет:) я с вами недавно, поэтому не совсем знаю каким образом строится общение в чате, но раз оно для поддержки, могу ли я обратиться к «старичкам» с вопросом? Я застряла на 63 уроке React js-практика follow-unfollow api. Не меняются при клике надписи Follow на unfollow и наоборот, API-KEY сгенерировала, withCredentials: true везде стоит, сервер отвечает , все хорошо, но в браузере надписи на кнопках не меняются, если кто-то догадывается в чем ошибка могу скинуть скрины, чтобы более детально. Заранее спасибо!
Сергей
Надписи на кнопках должны быть в зависимости от какой то метки в стейте или если они мапятся вместе с остальным содержимым то типа {t.follov : 'Фолов' ? 'Unfolov'} где t колбэк мапа или у тебя он как то иначе называется.
Vlad
Ребят, кто-нибудь может помочь? Застрял на 37 уроке. Опять столкнулся с похожей проблемой с пропсами. После рефакторинга кода опять ругается на undefined в пропсах, когда пытаюсь добавить сообщение. Когда начинаю дебажжить вверх по компонентам, дохожу до самого state.js. Не могу понять, в чем проблема, и из-за чего они изначально принимают Undefined
Vlad
Vlad
сам стейт. export default store; есть, не заскринил его просто
Vlad
а что в app в пропсах лежит ? при дебаге
собственно, вот, что прилетает, когда отправляю сообщение
Vlad
удалось решить проблему
Ozzeron
А что заставляет перерисовываться наш дом после подключения реакт редакс либы ? Кто помнит?)
Ozzeron
у меня профайл перерисовывается, а вот диалоги - нет)
Антон
редюсеры
Антон
переприсвоил стейт
Антон
коннектом все проверилось и перерисовалось
Антон
по сути заставляет перерисовываться изменения ссылки на стейт если вдаваться в подробности
Антон
из этого лишние рендеры и тд)
Антон
либо у тебя type у action неверный
Антон
либо ты возвращаешь не ...state а просто state
Антон
либо все захардкожено)
Ozzeron
по тайпу залетает куда надо) хм, ну ща пороюсь, спс за развёрнутый ответ
Stas
Ребят
Stas
кто может обьяснить для чего приватный SSH key?
Stas
Где его использовать?