const switchInputs = (state) => {
console.log(state.switchInput) // disabled
this.setState(() => {
return {
switchInput: 'enabled'
}
});
}
Даёт ошибку:
TypeError: Cannot read property 'setState' of undefined
Функция находится в другом файле, данные стейта до функции доходят
Передайте в функцию значение this из компонента, там у вас другая переменная this, отсюда и ошибка. Ведь this имеет разное значение при каждом вызове функции, а еще значение this зависит от того, каким образом вызвана функция.
const switchInputs = (me, state) => {
console.log(state.switchInput) // disabled
me.setState(() => {
return {
switchInput: 'enabled'
}
});
}
Ну и вызывайте, передавая в первом параметре this компонента. Раньше вы вызывали функцию с одним параметром, а теперь нужно будет вызвать с двумя. Полезная ссылка для изучения: this
Вообще, так делать не рекомендуется, лучше менять стейт в самом компоненте и функции писать внутри него, дабы не породить сайд эффекты.
Отступая от темы передачи this и вызова setState вне компонента, хотелось бы отметить некоторые моменты.
props; Вот так, объединяя простые и сложные подходы в разработке React приложения можно добиться чистого, понятного и не громоздкого кода. Прикрепил ссылки в описании, но всё же вынесу отдельно:
UPD: Изначально все покажется сложным, но после того, как удастся прикрутить Redux к своему приложения и написать несколько экшенов и редьюсеров, станет намного легче и проще. Рекомендуется начать использовать Redux на начальном этапе разработки проекта. В большой проект, не имея опыта работы с Redux, сложно будет затянуть Redux, это повлечет большие изменения и займет много времени.
Продвижение своими сайтами как стратегия роста и независимости