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()

posted @ 2022-03-03 13:08  BONiii  阅读(172)  评论(0编辑  收藏  举报