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
00
相似问题