实现一个类似于 useState 的 useMediatedState hook,但支持一个中介函数,该函数在每次状态设置时运行。此中介函数可用于转换或拦截状态更新。
useState
useMediatedState
const replaceMultipleSpaces = (s) => s.replace(/[\s]+/g, ' '); export default function Component() { const [state, setState] = useMediatedState(replaceMultipleSpaces, ''); return ( <div> <div>您将无法输入多个空格</div> <input type="text" min="0" max="10" value={state} onChange={(e) => setState(e.target.value)} /> </div> );}
mediator:一个接收新状态并返回转换后状态的函数。此函数可以有两种形式:
mediator
(newState: T) => T
setState
(newState: T, dispatch) => void
dispatch
initialState:初始状态值
initialState
注意:即使 mediator 更改为新的和/或不同的函数,也应保持不变。
该 hook 返回一个包含两个元素的数组:
本质上,该 hook 返回与 useState 相同的值。
console.log()