[英]TypeScript interface signature for the onClick event in ReactJS
[英]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.