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

时间:2019-08-28 14:14:04

标签: reactjs redux react-redux redux-saga react-context

我有一些变量,这些变量由React Context通过带有提供者和使用者组件的React.createContext()进行控制。我也在使用redux-saga,所以我的问题是仍然需要在redux-saga函数中访问此上下文值。我正在寻找类似于redux-store的“ yield select”语句。

任何知道的人请向我解释。预先谢谢你。

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

1 个答案:

答案 0 :(得分:2)

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

像这样...

提供程序组件

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

来获取状态