🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
之前很多具有副作用的操作,例如网络请求,修改 UI 等,一般都是在`class`组件的`componentDidMount`或者`componentDidUpdate`等生命周期中进行操作。而在函数组件中是没有这些生命周期的概念的,只能`return`想要渲染的元素。 但是现在,在函数组件中也有执行副作用操作的地方了,就是使用`useEffect`函数。 #### 语法 ``` useEffect(() => { doSomething }); ``` 两个参数: * 第一个是一个函数,是在第一次渲染以及之后更新渲染之后会进行的副作用。 * 这个函数可能会有返回值,倘若有返回值,返回值也必须是一个函数,会在组件被销毁时执行。 * 第二个参数是可选的,是一个数组,数组中存放的是第一个函数中使用的某些副作用属性。用来优化 useEffect * 如果使用此优化,请确保该数组包含外部作用域中随时间变化且 effect 使用的任何值。 否则,您的代码将引用先前渲染中的旧值。 * 如果要运行 effect 并仅将其清理一次(在装载和卸载时),则可以将空数组(\[\])作为第二个参数传递。 这告诉React你的 effect 不依赖于来自 props 或 state 的任何值,所以它永远不需要重新运行。 > 虽然传递 \[\] 更接近熟悉的`componentDidMount`和`componentWillUnmount`执行规则,但我们建议不要将它作为一种习惯,因为它经常会导致错误。 [https://blog.csdn.net/weixin\_34406086/article/details/91439719](https://blog.csdn.net/weixin_34406086/article/details/91439719) >