簡體   English   中英

TypeScript 如何覆蓋 onClick 事件簽名

[英]TypeScript how to overwrite onClick event signature

我有一個子組件如下

import React from 'react';

interface TodoListProps {
  items: { id: string; text: string }[];
  buttonHandler: (todoId: string) => void;
}

const TodoList: React.FC<TodoListProps> = (props) => {
  return (
    <ul>
      {props.items.map((todo) => (
        <li key={todo.id}>
          <span>{todo.text}</span>
          <button onClick={props.buttonHandler}>CLICK ME</button>
        </li>
      ))}
    </ul>
  );
};

export default TodoList;

props.buttonHandler指定為 function ,期望todoId作為參數,並且buttonHandler期望從父級傳遞下來。 我的父母正確地進行類型檢查非常有用。

現在的問題是我在這個組件上遇到了錯誤

類型 '(todoId: string) => void' 不可分配給類型 '(event: MouseEvent<HTMLButtonElement, MouseEvent>) => void'。 參數 'todoId' 和 'event' 的類型不兼容。 類型 'MouseEvent<HTMLButtonElement, MouseEvent>' 不可分配給類型 'string'.ts(2322)

我應該如何處理問題

我應該如何處理問題

將正確的信息傳遞給buttonHandler 目前,您正在向它傳遞一個事件,而不是一個字符串。

有幾種方法可以做到這一點,例如包裝箭頭 function:

<button onClick={() => props.buttonHandler(todo.id)}>CLICK ME</button>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM