zoukankan      html  css  js  c++  java
  • React HookApi

    useEffect()

    在开始新的更新前,React 总会先清除上一轮渲染的 effect。
    如果不需要每次更新都执行,则传入第二个参数(依赖数组),只有当数组中的属性改变时才会调用

        useEffect(()=>{
            //组件加载或更新调用
            console.log("component did mount componentDidUpdate")
            //返回函数在组件卸载前调用
            return function cleanUp(){
                console.log("component  unmount");
            }
        },[ ]);//仅在xx属性更改时更新空数组([])只加载一次
    

    useState

    setState 函数用于更新 state。它接收一个新的 state 值并将组件的一次重新渲染加入队列

        const [state, setState] = useState(initialState);
        setState(newState);
    //与 class 组件中的 setState 方法不同,useState 不会自动合并更新对象
        const [state, setState] = useState({})
        setState(preState => { return {...prevState, ...updatedValues} })
    

    useReducer

    和useState作用类似只是useReducer适用于逻辑较复杂且包含多个子值,或者下一个 state 依赖于之前的 state 等。

       //通过dispatch来更改状态,从而会调用switchState方法更新值
        const [state,dispatch]  = React.useReducer(switchState,{//初始值
            isLoading: true,
            isSignout: false,
            userToken: null,
        });
        function switchState(state,action){
            switch (action.type) {
                case 'RESTORE_TOKEN':
                  return {
                    ...state,
                    userToken: action.token,
                    isLoading: false,
                  };
                //....
              }
        }
      //更新
      dispatch({ type: 'SIGN_IN', token: 'dummy-auth-token' });
    

    useMemo

    
        //传入 useMemo 的函数会在渲染期间执行,仅在依赖项改变时才会重新计算,
        //如果没有提供依赖项数组,useMemo 在每次渲染时都会计算新的值
        const memoValue = React.useMemo(()=>{return {} },[])
    

    useContext && context

    相当于 class 组件中的 static contextType = MyContext 或者 <MyContext.Consumer>。

      const ThemeContext = React.createContext(themes.light);
      const theme = useContext(ThemeContext);
    

    在class组件中获取context值

      static contextType = ThemeContext
      // this.context.theme 获取值
    
  • 相关阅读:
    kingso_sort
    kingso_module
    KINGSO介绍
    kingso
    铁饭碗的含义不是在一个地方永远有饭吃,而是在任何地方都有饭
    立威廉_百度百科
    甜蜜间谍_百度百科
    贝克曼
    报喜鸟集团有限公司_百度百科
    浙江乔治白服饰股份有限公司
  • 原文地址:https://www.cnblogs.com/cnman/p/14953495.html
Copyright © 2011-2022 走看看