Можно ли программно использовать новый контекстный API React?

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

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

У меня есть пример. Если вы нажмете кнопку, она покажет вам, как далеко продвинулось приложение: https://codesandbox.io/s/r49qyymjzn

Вроде ни разу не попал в {ctx => { console.info('...') }.

Любая помощь будет принята с благодарностью, спасибо.

переносит действие changeName в предназначенный Context.Consumer?

ztadic91 23.03.2018 22:36

@ ztadic91 Да, я закончил тем, что написал целую вещь для глобального управления состоянием, похожую на Redux, с ней и приправленную слиянием lodash. ?

corysimmons 17.04.2018 19:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
2
696
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Считайте Context.Provider компонентом с отслеживанием состояния. Действие changeName должно обновить состояние класса Context.Provider.

Изменения в context.js

handleNameChange = changeName;


actions: {
  changeName: this.handleNameChange
}

changeName.js

export default (e, newName) => {
  e.preventDefault();
  this.setState({ name: newName });
};

Пример рабочей песочницы здесь

Другие вопросы по теме