美文网首页
React Hook

React Hook

作者: INGME | 来源:发表于2022-05-31 15:11 被阅读0次

使用:在不编写class组件的情况下使用

useState
import React, { useState } from 'react';

function Example() {
  // 声明一个新的叫做 “count” 的 state 变量,初始值为 0
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}
useEffect / uselayoutEffec

1.1 useEffect: 在整个页面渲染完成才会调用的代码
import React, { useEffect } from 'react';

// 清除 effect
function Example() {

  useEffect(() => {
   const subscription = props.source.subscribe();
   return () => {
     // 清除订阅
     subscription.unsubscribe();
   };
  });
  return (
    <div>
      <p>uselayoutEffec</p>
    </div>
  );
}


// effect 的条件执行
function Example() {

  useEffect(() => {
    const subscription = props.source.subscribe();
    return () => {
      subscription.unsubscribe();
    };
   }, [props.source]);  // 此时,只有当 props.source 改变后才会重新创建订阅。
  });
  return (
    <div>
      <p>uselayoutEffec</p>
    </div>
  );
}

2.1 uselayoutEffec:和原来的 componentDidmount & componentDidUpdate 一致,在react完成Dom更新马上同步调用的代码,会阻塞页面渲染
useCallback / useMemo
作用:防止因为组件重新渲染,导致方法被重新创建,起到缓存的作用,只有当第二个参数变化了,才重新声明一次;

1.1 useCallback:返回一个 memoized 回调函数

import React, { useCallback} from 'react';

function Example() {

   const memoizedCallback = useCallback(() => {
    doSomething(a, b);
   }, [a, b]);
   
   render (
     <div onClick={ () => memoizedCallback() }></div>
  )
}

1.2 useMemo: 返回一个 memoized 值

useCallback(fn, deps) 相当于 useMemo(() => fn, deps)
useRef(保存引用值)
说明:useRef 返回一个可变的 ref 对象,其 .current 属性被初始化为传入的参数(initialValue)。返回的 ref 对象在组件的整个生命周期内持续存在

import React, { useRef } from 'react';

function TextInputWithFocusButton() {
  const inputEl = useRef(null);
  const onButtonClick = () => {
    // `current` 指向已挂载到 DOM 上的文本输入元素
    inputEl.current.focus();
  };
  return (
    <>
      <input ref={inputEl} type="text" />
      <button onClick={onButtonClick}>Focus the input</button>
    </>
  );
}

相关文章

  • React hook 10种 Hook

    React hook 10种 Hook (详细介绍及使用) React Hook是什么?React官网是这么介绍的...

  • 学习react hook的总结

    react16推出了react hook,react hook使得functional组件拥有了class组件的一...

  • react-hook-form使用

    官网地址:https://react-hook-form.com/[https://react-hook-form...

  • react hook介绍

    react hook是什么 react hook是react中引入新特性,它可以让react函数组件也拥有状态;通...

  • React Hook介绍与使用心得

    关于React Hook React Hook 对于React来说无疑是一个伟大的特性,它将React从类组件推向...

  • React Hook

    Through 4 questions introduce React Hook What is Hook? In...

  • react-hook

    react-hook

  • react hook入门

    一、react hook介绍 Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情...

  • React Hooks - 学习笔记

    React Hooks Hook 是能让你在函数组件中“钩入” React 特性的函数。 State Hook u...

  • Hook

    hook 介绍 Hook 是 React16.8 的新特性。Hook 就是 JavaScript 函数, 它可以让...

网友评论

      本文标题:React Hook

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