React的Hooks篇介绍(下)

useMemo

这个hook和memo本身没有关系,它类似于vue中的computed,他会自动的将内部函数调用,得到结果缓存起来。当我们下次使用时,就不需要调用,直接当成数据使用即可。

import { useMemo } from "react";
import { useEffect } from "react";
import { useState } from "react";

const TestUseMemo = () => {
  let [count, setCount] = useState(0)
  let [stus, setStus] = useState([
    {
      name: "张三",
      sex: "男"
    }, {
      name: "李四",
      sex: "男"
    }, {
      name: "小红",
      sex: "女"
    }
  ])
  
  // 这个地方的boys就是对应的数组 而不是函数
  let boys = useMemo(() => {
    return stus.filter(stu => stu.sex === '男')
  }, [])


  // 这里打印的就是男生的数组  
  console.log(boys)
  

  return (
    <div>
      <button onClick={() => setCount(count + 1)}>+1</button>
    </div>
  );
}
 
export default TestUseMemo;

上面代码,有一个问题,如果我们stus数据发生改变时,比如新增了男生,那么boys是不会更新的。如果不更新,则我们就需要在依赖数组中, 添加对应依赖的数据,比如我们这个例子,boys需要依赖stus,那么我们就需要填入stus

let boys = useMemo(() => {
  return stus.filter(stu => stu.sex === '男')
}, [stus])

useRef

这个是用来获取DOM对象,类似于Vue中通过ref获取DOM对象的操作。

import { useEffect, useRef } from "react";

const useref = () => {
    //生成一个对应的useRef固定写法
    let pElement=useRef(null)
    useEffect(()=>{
        console.log(pElement.current);
        //这个是p标签绑定成功后pElement.current 就是我们对应的DOM对象

    },[])
    return ( 
        <div>这个是对hooks的useRef的讲解和使用
            <p ref={pElement}>这是对应的p标签</p>
        </div>
     );
}
 
export default useref;

ReactRouter的hooks

useParams

获取URL中的动态路由的参数

例如:我们有一个动态路由"/page/:id".当我们访问"/page/1"时,我们想要获得这个1,就可以通过useParams

import { useParams } from 'react-router-dom'

export default () => {
  let { id } = useParams()
}

useSearchParams

获取一个URLSearchParams对象,通过这个对象,获取到对应的query参数

例如:我们访问"/page?id=1"如果我们想要获取到id这个值

import { useSearchParams } from 'react-router-dom'

export default () => {
  let [searchParams] = useSearchParams()
  let id = searchParams.get('id')
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值