网站建设选方舟网络,莱芜网络推广公司,wordpress口语主题,敦煌做网站的公司电话目录
编辑
前言
Hooks的前世
函数组件
类组件
状态和生命周期的管理
Hooks用途以及相应代码
状态管理
用于生命周期管理和副作用操作的 Hooks
用于上下文管理的 Hooks
其他用途的 Hooks 前言
React Hooks 是在 React 16.8 版本中引入的一个非常强大的新特性…目录
编辑
前言
Hooks的前世
函数组件
类组件
状态和生命周期的管理
Hooks用途以及相应代码
状态管理
用于生命周期管理和副作用操作的 Hooks
用于上下文管理的 Hooks
其他用途的 Hooks 前言
React Hooks 是在 React 16.8 版本中引入的一个非常强大的新特性它允许在不编写 class 组件的情况下使用 state 和其他 React 特性。Hooks 提供了一种更直接的方式来使用 React 的特性和生命周期功能让函数组件的能力大大增强。
有关state状态的详细解释可以在这篇文章找到解释粗糙理解就是app的数据flutter向 一文就够了 以声明式编程的角度理清到处都用的“状态state”是什么-CSDN博客
Hooks的前世
既然说到hooks在16.8才引入那之前是怎么处理代码的呢
React 16.8 引入 Hooks 之前React 的组件主要通过两种方式编写函数组件和类组件
函数组件
在 React 16.8 之前函数组件被称为无状态组件主要用于展示不能使用状态state和生命周期方法。函数组件的主要优点是简洁易懂。它接收 props 作为输入返回需要渲染的 JSX。
function Welcome(props) { return h1Hello, {props.name}/h1; }
类组件
类组件允许使用更多的特性如内部状态state和生命周期方法。通过这些特性可以控制组件的创建、更新和销毁过程。
class Welcome extends Component {constructor(props) {super(props);this.state { counter: 0 };}componentDidMount() {// 组件挂载后执行}componentDidUpdate() {// 组件更新后执行}componentWillUnmount() {// 组件卸载前执行}render() {return h1Hello, {this.props.name}/h1;}
}状态和生命周期的管理
在 Hooks 出现之前要在函数组件中使用状态和生命周期开发者需要将其重构为类组件。这一点限制了函数组件的使用场景也增加了组件代码的复杂性。
所以不难理解这样会有如下麻烦
在组件之间复用状态逻辑很难 在 Hooks 出现之前复用状态逻辑需要高阶组件或渲染属性模式这些模式使得代码难以理解。复杂组件变得难以理解 类组件经常需要理解 JavaScript 中的 this 关键字且代码往往分散在多个生命周期方法中。难以理解的类 对于初学者和非 JavaScript 背景的开发者来说类是一个比较难以理解和使用的概念。
Hooks用途以及相应代码
状态管理
useState这是最基本的 Hook允许在函数组件中添加局部状态。状态通常是指组件中的数据如用户输入、列表项等。
function Example() {const [count, setCount] useState(0);return (divpYou clicked {count} times/pbutton onClick{() setCount(count 1)}Click me/button/div);
}用于生命周期管理和副作用操作的 Hooks
useEffect允许在函数组件中执行副作用操作如数据获取、订阅或手动修改 DOM 等它可以被看作是 componentDidMount、componentDidUpdate 和 componentWillUnmount 这些生命周期方法的组合。
function Example() {const [count, setCount] useState(0);// 类似于 componentDidMount 和 componentDidUpdate:useEffect(() {// 使用浏览器的 API 更新页面标题document.title You clicked ${count} times;});return (divpYou clicked {count} times/pbutton onClick{() setCount(count 1)}Click me/button/div);
}用于上下文管理的 Hooks
useContext允许在函数组件中访问 React 的 Context 特性使得跨组件层级的数据传递变得简单。
function Example() {const theme useContext(ThemeContext);return div style{{ background: theme.background, color: theme.color }}我是使用了 ThemeContext 的文本/div;
}其他用途的 Hooks
useReducer为状态管理提供了更复杂的替代方案类似于 Redux 中的 reducer适用于组件有复杂状态逻辑时使用。useCallback返回一个记忆化的回调函数只有在一个依赖项改变时才会更新适用于传递给子组件的回调优化。useMemo返回一个记忆化的值只有在依赖项改变时才重新计算用于性能优化。useRef返回一个可变的 ref 对象其 .current 属性被初始化为传入的参数initialValue用于访问 DOM 节点或存储任何可变值。
更多hook查看react官网
React 内置 Hook – React 中文文档