Questions tagged «react-context»

5
React Context vs React Redux,我什么时候应该使用每一个?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 2年前关闭。 改善这个问题 React 16.3.0已发布,并且Context API不再是实验功能。Dan Abramov(Redux的创建者)在这里对此发表了很好的评论,但是Context仍然是实验性功能已经有两年了。 我的问题是,根据您的看法/经验,我何时应该在React Redux上使用React Context,反之亦然?

3
如何从子组件内部更新React Context?
我在上下文中有如下语言设置 class LanguageProvider extends Component { static childContextTypes = { langConfig: PropTypes.object, }; getChildContext() { return { langConfig: 'en' }; } render() { return this.props.children; } } export default LanguageProvider; 我的应用程序代码如下所示 <LanguageProvider> <App> <MyPage /> </App> </LanguageProvider> 我的页面具有切换语言的组件 <MyPage> <LanguageSwitcher/> </MyPage> LanguageSwitcher 在这种MyPage情况下,需要更新上下文以将语言更改为“ jp”,如下所示 class LanguageSwitcher extends Component { static …

4
在渲染功能之外访问React Context
我正在使用新的React Context API而不是Redux开发一个新应用,并且在使用之前,例如Redux,当我需要获取用户列表时,我只是调用componentDidMount我的操作,但是现在使用React Context,我的操作可以在内部进行。我的使用者位于我的渲染函数中,这意味着每次调用我的渲染函数时,它将调用我的操作以获取用户列表,这不好,因为我将执行许多不必要的请求。 那么,如何只能一次调用动作,例如incomponentDidMount而不是in render? 只是为了举例说明,请看以下代码: 假设我将所有内容包装Providers在一个组件中,如下所示: import React from 'react'; import UserProvider from './UserProvider'; import PostProvider from './PostProvider'; export default class Provider extends React.Component { render(){ return( <UserProvider> <PostProvider> {this.props.children} </PostProvider> </UserProvider> ) } } 然后,我将这个Provider组件包装了所有应用程序,如下所示: import React from 'react'; import Provider from './providers/Provider'; import { Router } …

3
无法读取未定义的属性“ history”(React Router 5的useHistory挂钩)
我正在使用几个星期前发布的React Router的新useHistory挂钩。我的React-router版本是5.1.2。我的React版本为16.10.1。您可以在底部找到我的代码。 但是,当我从react-router导入新的useHistory时,出现此错误: Uncaught TypeError: Cannot read property 'history' of undefined 这是由React-router中的这一行引起的 function useHistory() { if (process.env.NODE_ENV !== "production") { !(typeof useContext === "function") ? process.env.NODE_ENV !== "production" ? invariant(false, "You must use React >= 16.8 in order to use useHistory()") : invariant(false) : void 0; } return useContext(context).history; <---------------- …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.