【发布时间】:2020-01-01 00:16:54
【问题描述】:
新的 React Context API 非常棒,但是我似乎总是想方设法在 React 组件之外访问它。当你在 React 函数组件或 React 类组件中时,一切都很好,但是当你需要从上下文中读取或重置一个值(例如由于在 fetch 函数中发生的异步操作),没有简单的方法可以做到这一点..
那么,有没有办法在 React 组件之外访问 React Context Consumer 中的值?
后期编辑: 我继承了一个基于 Redux 的项目并慢慢过渡出来。在动作创建者中,我有一个清除商店内容的注销功能:
export const logoutRequest = () => dispatch => {
navigate('Welcome')
// Reset apollo data
client.resetStore()
persistor.purge()
// Reset context api data HERE
//
}
我可以轻松地在调用注销请求的组件中创建一个使用者,但这发生在 3 个不同的组件中,我不想在那里复制代码..
【问题讨论】:
-
您能举个例子吗?不是很清楚,为什么要在组件之外访问它。
-
但是,在组件之外访问它到底意味着什么?没有提供者,以祖先组件的形式,它是无用的。所以......在组件之外意味着在没有提供者的情况下访问上下文,这会让你......究竟是什么?
-
你能把你的 fetch 函数放在拥有上下文提供者的组件中吗?或者使上下文成为一个对象,并提供设置函数来改变任何必要的状态?我只是想不出 React 应用程序中有很多情况需要在组件之外有代码,这绝对不应该经常发生。如果您可以发布您遇到此问题的某些组件的代码,我们可以为您提供更具体的建议。
-
添加了更具体的例子..但是,我认为这里的用例不太重要..
标签: javascript reactjs react-native