哪种技术更适合 react 应用中的状态管理? 实际上,我想创建一个大型应用程序,我必须在其中管理我的状态,哪种技术最适合状态管理上下文,Redux或反应自定义钩子?
我个人更倾向于Redux。但是,如果您是尝试学习 Redux 的初学者,您可能会遇到一些困难,直到您理解它。一旦你得到它,你也会喜欢它。与其构建自己的自定义钩子,不如使用 Redux,就好像有什么问题/你被某些东西击中了,你有社区支持,你也可以使用一些中间件库(如 redux-thunk 等)调度异步调用。您也可以将 Redux 与表单一起使用。我想如果你结束构建你的自定义钩子,你最终可能会浪费时间来处理所有这些。
当然,最好继续使用 Redux,因为使用 Redux 处理大型应用程序更容易。它只有一个存储,基本上是一个javascript对象。您可以将商店分成许多部分,每个部分将用于应用程序的特定部分。所有这些部分将使用redux提供的combineReducers函数连接在一起。
React 是一个状态管理库,随着 React 钩子的发布和对 React 上下文的大规模改进,这种状态管理方法得到了极大的简化。
我认为在 99% 的情况下,我们不需要 redux 并为项目增加一层复杂性。 对于大型应用程序,也许 redux 是更好的选择。但是如果你选择 React 进行状态管理,你需要关于一些概念的良好信息,这个概念是:
局部状态与全局状态- (某些组件需要本地状态,并且将它们的所有状态置于全局状态会导致很多问题)
- 反应上下文和道具钻孔问题以及如何有效地使用 React 上下文
- 反应钩子特别使用Reducer和useContext。
- 不可变状态
你总是需要问自己一个问题:我需要额外的库吗?
Redux 的受欢迎程度正在下降,这是由于对 Rereact 本机状态管理的改进。这是有原因的!
如果你想为一家不是全新的公司工作,你有可能必须使用redux。我很幸运地说服我的团队使用我们自己的状态管理库构建,只使用 React.useState 在引擎盖下。
如果你的应用程序状态逻辑很简单,意思是:状态大多是局部的,共享状态大多是父子关系,不同的状态之间没有太大的依赖性,那么我建议只使用 React useState 和 useReducer(如果你喜欢使用 reducer)。
一旦你的应用程序状态变得复杂,你需要有一些额外的全局状态管理的东西。
关于 React.useState,您需要了解的最重要的事情是,返回的 setState 函数是您与该组件状态的连接。假设我们可以将该函数从组件中取出并在其他地方使用它。这样,您就有一个从组件外部更新状态的函数。
export let exportedStateSetter;
const Component = () => {
const [state, setState] = useState();
useEffect(() => {
exportedStateSetter = setState;
return () => exportedStateSetter = undefined;
});
return <div>{state}</div>
};
在上面的示例中,您现在可以导入 exportedStateSetter 并在其他地方使用它来更新此组件的状态。
!这不是一个最好的实践示例,这是一个简单的可视化。
当你非常批判性地思考这个问题时,你会意识到现在你知道如何从组件外部设置组件状态,你知道如何全局设置状态。
我强烈建议使用这种方法来构建自己的全局状态库,或者使用我根据我解释的内容创建的一些全局状态库:
npm install --save react-global-state-hook // simple
npm install --save rx-global // complex
总结一下:如果作业不需要,请不要使用 Redux。您始终可以使用 Redux 约定,通过将状态分隔到存储中,使用化简器更新状态以及与状态交互的操作。为此,您可以使用本机 React 状态管理,如果正确使用时不仅仅是 React.useState。React 为您提供了所需的一切以及构建自己的一切。
我对自己的库拥有最好的开发人员体验,这些库随着时间的推移而发展。它迫使您了解一般的状态管理和您正在使用的框架。
我愿意接受有关 2 个库的任何反馈,如果您对状态有任何疑问,请随时继续发布。