suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Die Rückruffunktion, die eine anonyme Funktion zurückgibt, gibt bei onClick einen Fehler aus

import React from 'react'

export default function Test() {
  const handleClick = () => (label: string) => {
    console.log('label: ' + label)
  }

  return <button onClick={handleClick('red one')}>click me</button>
}

Der TypeScript-Compiler beschwert sich über meinen Code. Was mache ich falsch?

Type '(label: string) => void' is not assignable to type 'MouseEventHandler<HTMLButtonElement>'.
  Types of parameters 'label' and 'event' are incompatible.
    Type 'MouseEvent<HTMLButtonElement, MouseEvent>' is not assignable to type 'string'.ts(2322)
index.d.ts(1494, 9): The expected type comes from property 'onClick' which is declared here on type 'DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>'

P粉649990273P粉649990273285 Tage vor508

Antworte allen(2)Ich werde antworten

  • P粉587780103

    P粉5877801032024-04-03 14:56:23

    handleClick 函数不需要任何类型的参数,但您向其传递一个字符串。

    应该是:

    import React from 'react'
    
    export default function Test() {
      const handleClick = (label: string) => () => {
        console.log('label: ' + label)
      }
    
      return 
    }

    Antwort
    0
  • P粉378890106

    P粉3788901062024-04-03 13:21:28

    反之亦然

    应该是

    (label: string) => (e: any) => {

    而不是

    (e: any) => (label: string) => {
    import React from 'react'
    
    export default function Test() {
      const handleClick = (label: string) => (e: any) => {
        console.log('label: ' + label)
      }
    
      return 
    }

    Antwort
    0
  • StornierenAntwort