Javascript 如何使用功能组件分别呈现上下文提供程序和路由器?
我正在创建一个只使用功能组件的应用程序。 我正在使用ContextAPI和Context。提供程序中断路由器。每次我点击一个链接,应用程序就会冻结。我在分别呈现组件提供程序和路由器时找到了解决方案,但我不知道如何做到这一点。 我应该怎样重写这个Javascript 如何使用功能组件分别呈现上下文提供程序和路由器?,javascript,reactjs,Javascript,Reactjs,我正在创建一个只使用功能组件的应用程序。 我正在使用ContextAPI和Context。提供程序中断路由器。每次我点击一个链接,应用程序就会冻结。我在分别呈现组件提供程序和路由器时找到了解决方案,但我不知道如何做到这一点。 我应该怎样重写这个 ReactDOM.render( <ProductProvider> <BrowserRouter> <App></App> </BrowserRouter> </Pr
ReactDOM.render(
<ProductProvider>
<BrowserRouter>
<App></App>
</BrowserRouter>
</ProductProvider>
,
document.getElementById('root')
);
ReactDOM.render(
EDIT3:可能是useEffect钩子导致了无限渲染循环,但我不知道如何修复此问题。我检查了您的代码,我想知道您的上下文提供程序是否正确。这就是您要做的:
<Context.Provider value={products}>
产品必须是一个对象,但看起来像是一个数组,如果要传递数组,请执行以下操作:
<Context.Provider value={{products}}>
我检查了您的代码,不知道您的上下文提供程序是否正确。这就是您要做的:
<Context.Provider value={products}>
产品必须是一个对象,但看起来像是一个数组,如果要传递数组,请执行以下操作:
<Context.Provider value={{products}}>
已修复
实际上是useEffect钩子导致了这个问题。
我必须提供第二个参数(空数组),以便它只渲染一次。修复
实际上是useEffect钩子导致了这个问题。
我必须提供第二个参数(空数组)为了让它只渲染一次。您是否尝试反转路由器和提供程序?是的,我尝试过,但我仍然有相同的问题。使用BrowserRouter而不是Router如何,我就是这样做的,效果很好。我正在使用BrowserRouter。我已将BrowserRouter作为路由器导入。我认为问题出在其他地方,因为我“我对功能组件使用完全相同的代码,效果很好。应用程序的冻结可能是一个无限的渲染循环,但这只是一个猜测。你尝试过反转路由器和提供程序吗?是的,我有,我仍然有同样的问题。使用BrowserRouter而不是路由器怎么样,我就是这样做的,效果很好。”我使用的是BrowserRouter。我已经将BrowserRouter导入为路由器。我认为问题出在其他地方,因为我使用的功能组件代码完全相同,而且工作正常。应用程序的冻结可能是一个无限的渲染循环,但这只是一个猜测