zoukankan      html  css  js  c++  java
  • 自定义hook的步骤

    自定义hook的步骤

    自定义hook的步骤

    1.引入react和自己需要的hook
    2.创建自己的hook函数
    3.返回一个数组,数组中第一个内容是数据,第二是修改数据的函数
    4.将自己定义的hook暴露出去
    5.在自己的业务组件中引入并使用
    

    通过自定义hook 模拟数据接口请求功能

    utils > useLoadData.js

    import React,{useState,useEffect} from 'react';
    
    // 如何模拟数据接口请求功能
    export default function useLoadData(){
    
        const [num,setNum] = useState(0);
    
        useEffect(() => {
            
            setTimeout(() => {
                console.log('rrr');
                setNum(2)
            }, 1000);
         
        }, [])
    
        return [num,setNum]
    
    }
    
    

    通过自定义hook Reducer的使用

    
    import React,{useReducer} from 'react';
    
    const store = {
        age:10
    }
    
    
    // useReducer使用?
    // 1.创建 数据仓库store 和 管理者reducer
    // 2.通过useReducer(reducer,store)来state和dispatch
    const reducer = (state,action) =>{
        switch (action.type) {
            case 'changeAge':
                return {
                    ...state,
                    age:action.age
                }
                
            default:
                return {
                    ...state
                };
        }
    }
    
    export default function useLocalReducer(){
      const [state,dispatch] =  useReducer(reducer,store);
    
      return [
        state,
        dispatch
      ]
    }
    
    

    在组件中引入自定义的hook,并使用

    components > useReducer.js

        import React from 'react';
    import useLoadData from '../utils/useLoadData';
    import useLocalReducer from '../utils/useLocalReducer';
    
    export function Reducer(){
    
        const [num,setNum] = useLoadData()
    
       const [state,dispatch] = useLocalReducer()
    
        return(
            <div onClick={()=> dispatch({
                type:'changeAge',
                age:100
            })}>
                这是一个函数式组件---{num}--{state.age}
            </div>
        )
    }
    
    
  • 相关阅读:
    hdu--4027--不错的线段树
    hdu--3275--线段树<again>
    hdu--2795--又是线段树
    hdu--4407--一不留神就TLE了
    zoj--3822--第二题概率dp
    hdu--3911--线段树<我最近爱上她了>
    hdu--1710--二叉树的各种遍历间的联系
    hdu--1712--分组背包<如果你真的明白了背包..>
    hdu--4576--概率dp<见过最简单的概率dp>
    list remove object
  • 原文地址:https://www.cnblogs.com/malong1992/p/15367490.html
Copyright © 2011-2022 走看看