Saber2pr's Blog

读取一次即销毁的refValue

有时候可能需要这样一个函数:

let value = 'this is value'

const getOnceValue = () => {
  const onceValue = value
  value = null
  return onceValue
}

const initValue = getOnceValue()
const value = initValue ? initValue : getValue()

但是在react中,不建议在组件中访问外部变量(副作用)。可以使用useRef来改造它:

import { useRef } from 'react'

export const useOnceValue = <T>(value: T) => {
  const ref = useRef(value)
  const getInitPickerDate = () => {
    const onceValue = ref.current
    ref.current = null
    return onceValue
  }
  return getInitPickerDate
}

const initValue = useOnceValue('this is value')
const value = initValue ? initValue : getValue()