4-5作业

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

我是逍遥

2021-10-16

interface UseArrayReturns<T> {
   value: T[],
   clear: () => void,
   removeIndex: (index: number) => void,
   add: (person: T) => void
}
export const useArray = <T>(arr: T[]): UseArrayReturns<T> => {

  const [array, setArray] = useState(arr)
  const newArray = [...array]

  const clear = () => setArray([])
  const removeIndex = (index: number) => {
      newArray.splice(index, 1)
      setArray(newArray)
  }
  const add = (person: T) => {
      newArray.push(person)
      setArray(newArray)
  }
  return {
      value: array,
      clear,
      removeIndex,
      add
  }
}
写回答

1回答

Lair

2021-10-19

const newArray = [...array] 和 value: array,

这句有问题,这里指定为了常量;

后面又不断 setArray(newArray)

这是不对的:1、改变了源对象;2、value 始终持有的是初始状态,却又不是 array

0
0

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

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

2691 学习 · 1236 问题

查看课程

相似问题