我有一些变量,这些变量由React Context通过带有提供者和使用者组件的React.createContext()进行控制。我也在使用redux-saga,所以我的问题是仍然需要在redux-saga函数中访问此上下文值。我正在寻找类似于redux-store的“ yield select”语句。
任何知道的人请向我解释。预先谢谢你。
P / S:当前,我在调度动作时将上下文值传递给动作对象有效负载。因此,在redux-saga中,我们可以在action参数中使用它。我不知道这是否是最佳做法。
答案 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