useState惰性渲染
函数签名:
function useState<S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>];
添加函数只是惰性渲染。initialState
参数只会在组件的初始渲染中起作用,后续渲染时会被忽略。如果初始 state 需要通过复杂计算获得,则可以传入一个函数,在函数中计算并返回初始的 state,此函数只在初始渲染时被调用.
所以要在useState中保存函数,则需要再加一层函数
const [fun, setfun] = React.useState(()=>()=>{console.log('我是初始化函数')}
如果想存储函数,还可以用useRef()
const callbackRef = React.useRef(()=>alert("init"))
//修改
callbackRef.current = () => alert("updatad")
//更新不会触发页面更新!!!!!!!!,所以读取callbackRef的值需要如下
()=>callbackRef.current()