reactjs 为什么我不能在TypeScript中向函数添加额外的参数?

zwghvu4y  于 2023-05-17  发布在  React
关注(0)|答案(1)|浏览(118)

我在做一个待办事项应用程序。我正在尝试将事件和www.example.com添加items.id到按钮函数中(例如:删除、编辑、完成)。
通常在React中,这是可以工作的(我也在普通React中制作了todo应用程序,没有问题)。使用TypeScript时,我会得到一个错误,说,expected 1 argument,got 2。如何在TypeScript中指定第二个参数?

function List({}: Props) {
  const [todos, setTodos] = useContext(TodoContext);

  const editButton = (event: React.MouseEvent<HTMLButtonElement>) => {
    event.preventDefault();
  };
  const deleteButton = (event: React.MouseEvent<HTMLButtonElement>) => {
    event.preventDefault();

    console.log(todos);
  };
  const completedButton = (event: React.MouseEvent<HTMLButtonElement>) => {
    event.preventDefault();
  };

  return (
    <ListWrapper>
      <ul className="list">
        {todos?.map((item) => {
          return (
            <>
              <li className="list__item">
                <div className="list-item">
                  <span className="list-item__todo">{item.name}</span>
                  <button
                    className="list-item__button list-item__button--edit"
                    onClick={(e) => editButton(e)}
                  >
                    Edit
                  </button>
                  <button
                    className="list-item__button list-item__button--delete"
                    onClick={(e) => deleteButton(e)}
                  >
                    Delete
                  </button>
                  <button
                    className="list-item__button list-item__button--completed"
                    onClick={(e) => completedButton(e, item.id)}
                  >
                    Completed
                  </button>
                </div>
              </li>
            </>
          );
        })}
      </ul>
    </ListWrapper>
kgsdhlau

kgsdhlau1#

你的函数定义也需要有第二个参数。

const completedButton = (event: React.MouseEvent<HTMLButtonElement>, id: string) => {
    event.preventDefault();
  };

相关问题