从 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
获取状态
我有一些变量由 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