Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。
Effect Hook 可以让你在函数组件中执行副作用操作,
useState
就是一个 Hook 。通过在函数组件里调用它来给组件添加一些内部 state。React 会在重复渲染时保留这个 state。useState
会返回一对值:当前状态和一个让你更新它的函数,你可以在事件处理函数中或其他一些地方调用这个函数。
useEffect
就是一个 Effect Hook,给函数组件增加了操作副作用的能力。它跟 class 组件中的componentDidMount
、componentDidUpdate
和componentWillUnmount
具有相同的用途,只不过被合并成了一个 API。简而言之:useEffect 提供了 state 发生改变,以及组件卸载等“事项”的副作用。
副作用的应用无疑给前端编码带来了便利,因为利用它可以帮助我们完成数据驱动视图的理念,在大部分情况下避免了繁琐的 DOM 操作。在如今这个前端框架盛行的时代,副作用在前端的日常编码下可以说是无时无刻都存在的,它扮演者双刃剑的角色,不论是作为框架的设计者以及使用者,都应该 确保副作用是清晰的可追溯的,才能让我们的代码处于可控。