Oleg
покажи где вызывается Tips
Max
Max
в классовой компоненте
Max
Oleg
не контейнерная а сама Tips компонента
Max
Max
внутри контейнерной
Max
Max
или нужно вот так?
Oleg
вобщем смотри, у тебя в пропсы в Tips будет приходить только addFilmForm
Oleg
Max
ок
Oleg
остальное все норм
Oleg
теперь покажи редюсер в котором пишутся изменения в addFilmForm
Oleg
в state.FilmsPage.addFilmForm
Max
let initialState = {
allFilms: [
{
id: 1,
name: "Green mile",
description: "The film stars Tom Hanks as Paul Edgecomb and Michael Clarke Duncan as John Coffey, with supporting roles by David Morse, Bonnie Hunt, and James Cromwell. It also features Dabbs Greer in his final film role as the older Paul Edgecomb before his death in 2007 at the age of 90 from renal failure and heart"
},
{
id: 2,
name: "Forrest Gump",
description: 'American comedy-drama film directed by Robert Zemeckis and written by Eric Roth. It is based on the 1986 novel by Winston Groom, and stars Tom Hanks, Robin Wright, Gary Sinise, Mykelti Williamson, and Sally Field. The story depicts several decades in the life o'
},
{
id: 3,
name: "One Flew Over the Cuckoo's Nest",
description: "American comedy-drama film directed by Miloš Forman, based on the 1962 novel One Flew Over the Cuckoo's Nest by Ken Kesey and the play version adapted from the novel by Dale Wasserman. The film stars Jack Nicholson as Randle McMurphy, a new patient at a mental institution, and features a supporting cast of Louise Fletcher, William Redfield, Will Sampson, Sydney Lassick, Brad Dourif, Danny DeVito and Christopher Lloyd in his film debut."
},
{
id: 4,
name: "Great Gatsby",
description: "Film based on F. Scott Fitzgerald's 1925 novel of the same name. The film was co-written and directed by Baz Luhrmann and stars Leonardo DiCaprio as the eponymous Jay Gatsby, with Tobey Maguire, Carey Mulligan, Joel Edgerton, Isla Fisher and Elizabeth Debicki."
},
],
modalAddFilmStatus: false,
addFilmForm: {
name: '',
description: '',
validation: {
nameMoreThan: false,
nameIsEmpty: true,
descriptionMoreThan: false,
descriptionLessThan: true,
descriptionIsEmpty: true,
inputContainSymbols: false,
},
addFilmButtonStatus: false
}
}
Max
Oleg
ну вот тут ошибка скорее всего
Oleg
_. это лодаш?
Max
да
Max
с лодашем и редьюсером что его использует вроде все норм
Max
стейт меняется, компоненты ререндерятся
Oleg
подебаж, думаю в данном случае не меняется стейт
Max
Max
вот тут не меняется походу
Oleg
да, возвращаетс старый обхект
Oleg
там тоже у тебя не явно все написано, что новый объект возвращается
Oleg
хотя мб и новый
Max
в верхней функции
Max
новый
Oleg
рекмоендую делать как димыч показывал, что бы точно
Max
как именно?
Oleg
например функция deleteCurrentFilm пишется в 4 строчки и без лодаша
Oleg
return {
...state,
allFilms: state.allFilms.filter( el => el.id !== filmId);
}
Oleg
код можно прямо в кейс редюсера без функции писать
Oleg
но для верности что возвращается новый объект , для редюсеря рекомендую использова immer
Max
понял. Спасибо
Max
Max
стейт меняется
Max
при каждом вводе символа
Max
а вот пропсы в компоненте нет
Max
Max
консоль лог молчит
Max
и при включенном дебагере код не останавливается
Max
🙀жесть
Oleg
ставь консоль лог а лучше дебаг в mapPropsToState
Max
Сейчас попробую
Max
Max
Max
мап пропс тоже не молчит
Oleg
меняется?
Max
да
Max
может потому что у меня нет диспатчей?
Max
но мне они там и не нужны
Oleg
не
Oleg
а где вызывается TipsContainer ?
Max
В классовой компоненте
Max
Oleg
покади ее вызов
Max
в смысле? как?
Oleg
заскринь где написано <TipsContainer />
Oleg
и заскринь ее импорт
Max
Max
Max
Oleg
надо ссыль на гитхаб
Oleg
так не понятно
Max
сек
Max
запушу
Max
https://github.com/maxhaponenko/films-app
Oleg
кароч полностью переписывай редюсер, у тебя там куча функций которые меняют стейт
Oleg
менять стейт может только функция редюсера, которая возвращается новый стейт
Oleg
ты же вносишь изменения в сам стейт - это недопустимо
Oleg
от сюда баги которые сложно уловить
Oleg
например ты вызыаеш функцю changeInputDescriptionText
Oleg
зачем в ней делать полный validateInputs ?
Oleg
профалидируй только дескрипшн и все
Oleg
и так по каждому экшину
Sergey
Подскажите как сделать примеру есть Стейт у него массив объектов есть свойство к примеру " important: false" как менять по клику по id свойство на. true у определенного обьекта
Oleg
редакс стейт?