【问题标题】:Possible to use React's new Context API programmatically?可以以编程方式使用 React 的新 Context API 吗?
【发布时间】:2018-09-02 15:19:35
【问题描述】:

我正在尝试拥有 1 个可以执行操作的大型全局状态,但我不希望所有这些操作都存在于同一个文件中。

我想将动作分解到它们自己的文件中并使用 changeState 函数(如减速器)进行抽象,但我不知道该怎么做。

我这里有一个例子。如果您单击该按钮,它将显示应用程序的进度:https://codesandbox.io/s/r49qyymjzn

似乎从来没有打到{ctx => { console.log('...') }

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 是否将 changeName 操作包装到预期的 Context.Consumer 中?
  • @ztadic91 是的,我最终用它编写了一个类似于 Redux 的整个全局状态管理的东西,并用 lodash 合并加糖。 ??????

标签: reactjs react-context react-state-management


【解决方案1】:

Context.Provider 视为一个有状态的组件。动作changeName需要更新Context.Provider类的状态。

context.js 的变化

handleNameChange = changeName;


actions: {
  changeName: this.handleNameChange
}

更改名称.js

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

工作沙盒示例here

【讨论】:

    猜你喜欢
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    相关资源
    最近更新 更多