Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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 在React.js中使用上下文API和useState,有什么缺点吗?_Javascript_Reactjs_React Redux_State Management - Fatal编程技术网

Javascript 在React.js中使用上下文API和useState,有什么缺点吗?

Javascript 在React.js中使用上下文API和useState,有什么缺点吗?,javascript,reactjs,react-redux,state-management,Javascript,Reactjs,React Redux,State Management,我创建了一个上下文和一个提供者,如下所示。如您所见,我在提供程序中使用useState()(用于状态)以及函数(所有函数都作为值prop在对象中传递,允许轻松分解子组件中需要的任何内容) import React,{useState,createContext}来自“React”; const CountContext=createContext(null); 导出常量CountProvider=({children})=>{ const[count,setCount]=useState(0);

我创建了一个上下文和一个提供者,如下所示。如您所见,我在提供程序中使用useState()(用于状态)以及函数(所有函数都作为值prop在对象中传递,允许轻松分解子组件中需要的任何内容)

import React,{useState,createContext}来自“React”;
const CountContext=createContext(null);
导出常量CountProvider=({children})=>{
const[count,setCount]=useState(0);
常量递增计数=()=>{
设置计数(计数+1);
};
常量递减计数=()=>{
设置计数(计数-1);
};
返回(
{儿童}
);
};
导出默认CountContext;
我将我的应用程序包装在更高位置(如index.js)的此类提供商中。 并使用useContext()使用状态,如下所示

import React,{useContext}来自“React”;
从“./contents/CountContext”导入CountContext;
从“/Incrementer”导入递增器;
从“/递减器”导入递减器;
常量计数器=()=>{
const{count}=useContext(CountContext);
返回(
{count}
);
};
导出默认计数器;
一切都很好,我发现与其他(共享)状态管理方法相比,以这种方式维护东西更容易

代码沙盒:


我想知道这里是否有我尚未注意到的错误或缺陷?

与其他状态管理工具(如Redux)的主要区别之一是性能

任何使用上下文的子级都需要嵌套在
ContextProvider
组件中。每次
ContextProvider
状态更改时,它都将渲染,其所有(未记忆的)子级也将渲染

相反,在使用Redux时,我们将每个组件连接到存储,因此每个组件仅在其连接到的状态部分发生更改时才会渲染