@yspb

Использовать global или local state в приложении на React?

Подскажите, пожалуйста, где можно почитать про best practice по управлению состоянием в приложении на React?

Идея redux или freezerjs с одним глобальным state это конечно здорово,
но писать на любой чих отдельный reducer или обработчик event с последующей отрисовкой всего приложения как-то выглядит не очень.
Понятно что обход всего дерева будет происходить быстро, и большинство компонент не будет выполнять render по условию shouldComponentUpdate, но разве это красивое решение?

Я написал несколько десятков простых компонент, каждый из которых выполняет свою функцию, и сейчас появилась проблема соединить их в одно приложение.

Использовал такой подход:

Компонент получает props от родителя и генерирует html код.
При различных event от пользователя, компонент меняет свой state и делает очередой render.
Для того чтобы дать родителю знать о том, что изменился state и возможно нужные новые props, я использую callback в который передаю текущий state компонента и название event который его вызвал

const componentWillUpdate = () => {
	let { onChange } = props
	if (typeof onChange === 'func') => {
		onChange({ state: this.state, event: "" })
	}
}


и у родителя пишу обработчик данного события

<Component prop1={ } prop2={ } onChange={ (opts) => this.handleComponentChange(opts) }>

При таком подходе можно писать компоненты не задумываясь о каких то глобальных вещах, но получается что мне нужно передавать данные от листьев вверх по дереву, у каждого родителя писать свои обработчики событий, а затем обратно вниз передавать полученные props. Выглядит тоже не очень.

Где найти баланс?
  • Вопрос задан
  • 729 просмотров
Пригласить эксперта
Ответы на вопрос 1
alvvi
@alvvi
export default apathy;
Как насчет MobX?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект