React-Hooks之useEffect()

1. 什么是useEffect Hook?

可以把 useEffect Hook 看做componentDidMountcomponentDidUpdatecomponentWillUnmount这三个生命周期函数的组合

2. useEffect Hook特点?

可以设置依赖, 只有依赖发生变化的时候才执行

    const [nameState, setNameState] = useState('ccnu');
    const [ageState, setAgeState] = useState(0);
    useEffect(()=>{
        // componentDidMount
        // componentDidUpdate
        console.log('组件被挂载或者组件更新完成');
        return ()=>{
            // componentWillUnmount
            console.log('组件即将被卸载');
        }
    });
    return (
        <div>
            <p>{nameState}</p>
            <button onClick={()=>{setNameState('it666')}}>修改</button>
            <p>{ageState}</p>
            <button onClick={()=>{setAgeState(ageState + 1)}}>增加</button>
            <button onClick={()=>{setAgeState(ageState - 1)}}>减少</button>
            <hr/>
        </div>
    )
}
function App() {
    const [isShowState, setIsShowState] = useState(true);
    return (
        <div>
            {isShowState && <Home/>}
            <button onClick={()=>{setIsShowState(!isShowState)}}>切换</button>
        </div>
        )
}
export default App;
useEffect Hook对比类组件生命周期方法优势

有分而治之的思想,易于拆分,可以将某一数据的处理全部放在一个effect中

function Home() {
    const [nameState, setNameState] = useState('lnj');
    const [ageState, setAgeState] = useState(0);
    useEffect(()=>{
        // 组件被挂载
        console.log('修改DOM');
    });
    useEffect(()=>{
        // 组件被挂载
        console.log('注册监听');
        return ()=>{
            console.log('移出监听');
        }
    });
    useEffect(()=>{
        console.log('发送网络请求');
    });
    return (
        <div>
            <p>{nameState}</p>
            <button onClick={()=>{setNameState('it666')}}>修改</button>
            <p>{ageState}</p>
            <button onClick={()=>{setAgeState(ageState + 1)}}>增加</button>
            <button onClick={()=>{setAgeState(ageState - 1)}}>减少</button>
            <hr/>
        </div>
    )
}
function App() {
    const [isShowState, setIsShowState] = useState(true);
    return (
        <div>
            {isShowState && <Home/>}
            <button onClick={()=>{setIsShowState(!isShowState)}}>切换</button>
        </div>
        )
}
export default App;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 关于hook 1.1 为什么使用hook 在react类组件(class)写法中,有setState和生命周期...
    江湖yi山人阅读 5,858评论 0 3
  • 排版有点乱,好像不支持字体自定义颜色,你可以去看我的博客 动机 Hook 解决了我们五年来编写和维护成千上万的组件...
    阿畅_阅读 2,828评论 0 1
  • React Hook useEffect 就是一个 Effect Hook,给函数组件增加了操作副作用的能力。它跟...
    FConfidence阅读 2,713评论 0 0
  • 使用React Hooks有什么优势? 什么是hookshook 是一些可以让你在函数组件里面钩入react st...
    Lyan_2ab3阅读 2,795评论 0 1
  • React是现在最流行的前端框架之一,它的轻量化,组件化,单向数据流等特性把前端引入了一个新的高度,现在它又引入的...
    老鼠AI大米_Java全栈阅读 11,016评论 0 26