以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - React 代码题
12. useArray()

以下是实现 useArray()的代码示例:

import { useState } from "react"

function useArray(initialArray: any[]) {
  const [array, setArray] = useState(initialArray)

  function push(item: any) {
    setArray([...array, item])
  }

  function removeByIndex(index: number) {
    const newArray = [...array]
    newArray.splice(index, 1)
    setArray(newArray)
  }

  return {
    value: array,
    push,
    removeByIndex,
  }
}

export default useArray

使用示例:

import useArray from "./useArray"

function ExampleComponent() {
  const { value, push, removeByIndex } = useArray([1, 2, 3])

  function handlePush() {
    push(4)
  }

  function handleRemove(index: number) {
    removeByIndex(index)
  }

  return (
    <div>
      <ul>
        {value.map((val: any, index: number) => (
          <li key={index}>
            {val} 
            <button onClick={() => handleRemove(index)}>Remove</button>
          </li>
        ))}
      </ul>
      <button onClick={handlePush}>Push</button>
    </div>
  )
}

export default ExampleComponent

在上面的示例中,我们创建了一个 useArray() hook,该 hook 接收一个初始数组并返回一个包含当前数组、pushremoveByIndex 方法的对象。

push() 方法将项目添加到数组中,而 removeByIndex() 方法可根据指定的下标从数组中删除项目。

ExampleComponent 中,我们使用 useArray() hook 来初始化数组,并定义了两个处理方法: handlePushhandleRemove 来处理插入和删除操作。在 render() 函数中,我们显示数组中的每个项目,并在每个项目旁边添加了一个删除按钮。同时,我们还为 push 方法创建了一个按钮。