从 redux-saga 函数访问 React 上下文值

Access React context value from redux-saga function

我有一些变量由 React Context 通过 React.createContext() 与 Provider 和 Consumer 组件控制。我也在使用 redux-saga,所以我的问题是无论如何都可以在 redux-saga 函数中访问这个上下文值。我正在寻找类似 "yield select" 与 redux-store 一起使用的语句。

请知道的朋友解释一下。提前谢谢你。

P/S:目前,我在分派动作时将上下文值传递给动作对象有效负载。所以在redux-saga中,我们可以在action参数中使用它。我不知道这是否是最佳做法。

编辑: 现在有一个包可以让您轻松获取上下文,react-outside-call

您可以保留提供程序组件的外部引用,并从中获取状态。

像这样...

提供商组件

class AppProvider extends Component {
  state = {
    number: 10,
  }

  render() {
    return (
      <AppContext.Provider value={this.state}>
        {this.props.children} 
      </AppContext.Provider>
    )
  }
}

应用程序主入口文件,或者您引用该提供程序实例的地方。

let appProviderRef
export const getProviderState = () => appProviderRef.state

ReactDOM.render(
  <AppProvider ref={ref => appProviderRef = ref}>
    <App />
  </AppProvider>
, document.getElementById('root'))
 

您现在可以从 redux sagas(或任何您想要的地方)同步调用 getProviderState

获取状态