Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用功能组件分别呈现上下文提供程序和路由器?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何使用功能组件分别呈现上下文提供程序和路由器?

Javascript 如何使用功能组件分别呈现上下文提供程序和路由器?,javascript,reactjs,Javascript,Reactjs,我正在创建一个只使用功能组件的应用程序。 我正在使用ContextAPI和Context。提供程序中断路由器。每次我点击一个链接,应用程序就会冻结。我在分别呈现组件提供程序和路由器时找到了解决方案,但我不知道如何做到这一点。 我应该怎样重写这个 ReactDOM.render( <ProductProvider> <BrowserRouter> <App></App> </BrowserRouter> </Pr

我正在创建一个只使用功能组件的应用程序。 我正在使用ContextAPI和Context。提供程序中断路由器。每次我点击一个链接,应用程序就会冻结。我在分别呈现组件提供程序和路由器时找到了解决方案,但我不知道如何做到这一点。 我应该怎样重写这个

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导入为路由器。我认为问题出在其他地方,因为我使用的功能组件代码完全相同,而且工作正常。应用程序的冻结可能是一个无限的渲染循环,但这只是一个猜测