Hooks从语法上来说是一些函数。这些函数可以用于在函数组件中引入状态管理和生命周期方法。
useMemo主要是用来实现性能优化的目的。
useMemo(callback,array):
useMemo()会返回一个函数称之为memoized。
import React,{useMemo,useState} from 'react'
const TestCom = React.memo(()=>{
return <>>
});
function App(){
const [user,setUser] = useState({
name:'hello',
userSex;1
})
const filterSex = useMemo(()=>{
return user.userSex === 1 ? '男' : '女'
},[user]);
return <>
{filterSex}
>
}
只有当user触发更新的时候,才会重新触发filterSex内部的计算,这样就到达缓存性能优化的目的了。
useCallback用于缓存一个函数,无论渲染多少次,函数都是同一个函数,这样可以减小不断创建新函数带来的性能和内存开销问题。
useCallback(callback,array):
import {useCallback,useState} from 'react'
function App(){
const [state,setState] = useState('');
const input = useCallback((e)=>{
setState(e.target.value);
},[]);
return <>
input(e)} />
>
}
自定义Hooks最重要的作用是逻辑复用,并非数据的复用,也不是UI的复用。
自定义Hooks就是声明一个函数,函数名根据命名规范以use作为开头,在函数内部可以使用任意内置Hooks。
import {useEffect}from 'react'
export default function useDomTitle(title){
useEffect(()=>{
document.title = title;
},[]);
return;
}
使用自定义Hooks时,在需要使用的组件中导入Hooks
import useDomTitle from './hooks/useDomTitle'
function APP(){
useDomTitle('hello');
return <>>
}