交作业啦!

来源:4-6 作业练习 - 用 Hook + TS + TS泛型实现useArray

A信仰圣光吧

2021-09-03

export const useArray = <T>(_value: T[]) => {
  const [value, setValue] = useState(_value)

  const add = useCallback((param: T) => {
    const result = JSON.parse(JSON.stringify(value))
    setValue(result.concat(param))
  }, [value])

  const removeIndex = useCallback((index: number) => {
    if (value[index]) {
      const result = JSON.parse(JSON.stringify(value))
      result.splice(index,1)
      setValue(result)
    }
  }, [value])

  const clear = useCallback(() => {
    setValue([])
  }, [])

  return { value, clear, removeIndex, add }
}

写回答

1回答

Nolan

2021-09-04

不要这样用:

JSON.parse(JSON.stringify(value))

非常损耗性能。。。

0
1
A信仰圣光吧
是消耗性能,不过[...value[]],在value也是引用类型的情况下不是只会拷贝一层么,总感觉不太保险
2021-09-06
共1条回复

React17+Hook+TS4 优质实践,仿 Jira 企业级项目

解锁 React17 高阶用法,轻松应对大型复杂长周期项目

2691 学习 · 1236 问题

查看课程

相似问题