Skip to content

状态类 Hooks

@mbjia/hooks

状态类 Hooks

用于管理弹窗开关、输入值、布尔切换等组件本地状态。

适合管理组件本地状态,例如弹窗开关、输入值、布尔切换等。

useModal

控制弹窗、抽屉、浮层等 open 状态。

ts
const useModal = (options?: { defaultOpen?: boolean }) => {
  return {
    open: boolean,
    toggle: () => void,
    closeModal: () => void,
    openModal: () => void,
  }
}
tsx
const { open, openModal, closeModal, toggle } = useModal({ defaultOpen: false })

入参:

字段类型必填默认值说明
defaultOpenbooleanfalse初始是否打开。

返回值:

字段类型说明
openboolean当前打开状态。
toggle() => void切换状态。
closeModal() => void关闭。
openModal() => void打开。

useInputChange

管理输入框值,onChange 同时支持字符串和原生 input change 事件。

ts
const useInputChange = (initialValue = '') => {
  return {
    value: string,
    setValue,
    onChange: (v: string | React.ChangeEvent<HTMLInputElement>) => void,
  }
}
tsx
const input = useInputChange('')

<input value={input.value} onChange={input.onChange} />

入参:

参数类型默认值说明
initialValuestring''初始值。

返回值:

字段类型说明
valuestring当前输入值。
setValue(value: string) => void直接设置值。
onChange(v: string | ChangeEvent<HTMLInputElement>) => void输入变化处理函数。

useToggle

管理布尔值。调用 toggle() 会取反,调用 toggle(true/false) 会设置为指定值。

ts
const useToggle: () => [boolean, (v?: boolean) => void]
tsx
const [checked, toggle] = useToggle()

toggle()
toggle(true)

返回值:

下标类型说明
0boolean当前布尔值。
1(v?: boolean) => void切换或指定布尔值。

useRadio

管理 AntD Radio 的选中值。

ts
const radio = useRadio<T>({ defaultValue })
入参类型必填说明
defaultValueT初始选中值。
返回值类型说明
valueT当前值。
onChange(e: RadioChangeEvent) => voidAntD Radio onChange 处理函数。
onReset() => void重置为默认值。

useUpdate

强制组件刷新。

ts
const update = useUpdate()
update()

返回一个无参函数,调用后触发组件重新渲染。

useCreation

按依赖缓存创建结果,类似更稳定的 useMemo

ts
const value = useCreation(() => createExpensiveObject(), [id])
参数类型说明
fn() => T创建函数。
depsDependencyList依赖数组。

useReactive

把对象包装成响应式对象,修改属性时触发组件更新。

ts
const state = useReactive({ count: 0 })
state.count += 1
参数类型说明
initialStateRecord<string, any>初始对象。

MBJIA Tools 文档