React Hooks 知识点详解

本文详细介绍了React中的三种主要Hooks:StateHook用于在函数组件中管理状态,EffectHook用于执行副作用操作,如数据获取和DOM操作,而RefHook则用于在函数组件中保存和查找组件内的引用。通过示例代码展示了如何使用useState、useEffect和useRef,并解释了它们各自的作用和用法。
摘要由CSDN通过智能技术生成
2. 三个常用的Hook
(1). State Hook: React.useState()
(2). Effect Hook: React.useEffect()
(3). Ref Hook: React.useRef()
3. State Hook
(1). State Hook让函数组件也可以有state状态, 并进行状态数据的读写操作
(2). 语法: const [xxx, setXxx] = React.useState(initValue)  
(3). useState()说明:
        参数: 第一次初始化指定的值在内部作缓存
        返回值: 包含2个元素的数组, 第1个为内部当前状态值, 第2个为更新状态值的函数
(4). setXxx()2种写法:
        setXxx(newValue): 参数为非函数值, 直接指定新的状态值, 内部用其覆盖原来的状态值
        setXxx(value => newValue): 参数为函数, 接收原本的状态值, 返回新的状态值, 内部用其覆盖原来的状态值
4. Effect Hook
(1). Effect Hook 可以让你在函数组件中执行副作用操作(用于模拟类组件中的生命周期钩子)
(2). React中的副作用操作:
        发ajax请求数据获取
        设置订阅 / 启动定时器
        手动更改真实DOM
(3). 语法和说明: 
        useEffect(() => { 
          // 在此可以执行任何带副作用操作
          return () => { // 在组件卸载前执行
            // 在此做一些收尾工作, 比如清除定时器/取消订阅等
          }
        }, [stateValue]) // 如果指定的是[], 回调函数只会在第一次render()后执行,stateValue表示监听的值,
        没有,表示任何值变化都会调用useEffect()。一般情况要加[ ]
        [ ]:表示什么值都不监听,任何值更新时都不会触发
        [stateValue] 监听stateValue这个值的变化才会触发
        [stateValue,stateValue2]监听stateValue,stateValue2值的变化才会触发
        只有当这个值变化了才会触发userEffect函数,页可以写成多个stateValue
    
(4). 可以把 useEffect Hook 看做如下三个函数的组合
        componentDidMount()
        componentDidUpdate()
    	componentWillUnmount() 

举例:

function Demo() {
  const [count, setCount] = React.useState(0);
  const [name, setName] = React.useState("zhansan");
  //绑定输入框里面值
  const myref = React.useRef();
  const emial = React.useRef();

  React.useEffect(() => {
    console.log("hello");
  }, [count]);

  const add = () => {
    //第一种写法,直接写值
    // setCount(count + 1);
    //第二种写法,写一个函数
    setCount((count) => count + 1);
  };

  const show = () => {
    const value = myref.current.value;
    console.log(value);
  };
  const changeName = () => {
    setName("lisi");
  };
  return (
    <div>
      <input type="text" ref={myref} />
      <input type="text" ref={emial} />
      <h2>
        当前的求和为{count},{name}
      </h2>
      <button onClick={add}>点我加1</button>
      <button onClick={changeName}>点我改名</button>
      <button onClick={show}>点我提示显示</button>
    </div>
  );
}

export default Demo;
5. Ref Hook
(1). Ref Hook可以在函数组件中存储/查找组件内的标签或任意其它数据
(2). 语法: const refContainer = useRef()
(3). 作用:保存标签对象,功能与React.createRef()一样
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化接口stockapi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值