美文网首页
使用Hooks实现生命周期

使用Hooks实现生命周期

作者: 被代码耽误的裁缝 | 来源:发表于2020-11-24 17:26 被阅读0次

    封装自定义 Hooks - 生命周期 hooks

    //life-cycle.js
    import { useEffect, useRef } from "react";
    
    //componentDidMount
    function useMount(fn) {
        useEffect(() => { fn() }, [])
    }
    
    //componentDidUpdate
    function useUpdate(fn) {
        const mounting = useRef(true)
        useEffect(() => {
            if (mounting.current) {
                mounting.current = false;
            } else {
                fn();
            }
        })
    }
    
    //componentUnMount
    function useUnMount(fn) {
        useEffect(() => fn(), [])
    }
    
    
    export {
        useMount,
        useUpdate,
        useUnMount
    }
    
    

    在 function 组件中使用

    
    import { useState } from 'react';
    import * as hookLife from "../../hooks/life-cycle";
    
    function List(props) {
        let forceUpdate = useState(0)[1];
        hookLife.useMount(() => {
            console.log("did mount!")
        })
        hookLife.useUpdate(() => {
            console.log("did update!")
        })
        hookLife.useUnMount(() => {
            console.log("did unmount!")
        })
    
        return (
            <div>
                <p>
                    <button onClick={forceUpdate}>强制刷新</button>
                </p>
            </div>
        )
    }
    
    export default List;
    

    相关文章

      网友评论

          本文标题:使用Hooks实现生命周期

          本文链接:https://www.haomeiwen.com/subject/kufwiktx.html