2016-11-21 5 views
4

Ich kann einfach nicht meinen Kopf um diese schätze ich vermute, ich habe wahrscheinlich ein halbes Dutzend Mal versucht und immer auf any zurückgreifen ... Gibt es eine legitime Möglichkeit zu starten Mit einem HTML-Element das in einer Komponente umbrechen und das in eine andere Komponente umwandeln, so dass die HTML-Requisiten alles passieren? Im Wesentlichen das HTML-Element anpassen? Zum Beispiel so etwas wie:Erweitern HTML-Elemente in React und TypeScript beim Bewahren Requisiten

interface MyButtonProps extends React.HTMLProps<HTMLButtonElement> {} 
class MyButton extends React.Component<MyButtonProps, {}> { 
    render() { 
     return <button/>; 
    } 
} 

interface MyAwesomeButtonProps extends MyButtonProps {} 
class MyAwesomeButton extends React.Component<MyAwesomeButtonProps, {}> { 
    render() { 
     return <MyButton/>; 
    } 
} 

Verbrauch:

<MyAwesomeButton onClick={...}/> 

Jedes Mal, wenn ich diese Art der Zusammensetzung versuchen, erhalte ich eine Fehlermeldung ähnlich:

Property 'ref' von foo nicht der Zieleigenschaft zuweisbar

+0

Sie suchen nach Komponenten höherer Ordnung (Komponentenfabriken). Überprüfe sie online und schau, ob das zu dem passt, was du verlangst. Sie sind im Wesentlichen "Komponentenfabriken", die es Ihnen ermöglichen, eine Komponente in eine andere Komponente zu verpacken, die diese ursprüngliche Komponente, aber mit neuen oder modifizierten Requisiten zurückgibt. – ZekeDroid

+0

Ist die Kompilierzeit des Fehlers (beim Kompilieren)? Weil, ich habe versucht, Ihren Code mit 'TSC' Befehl zu kompilieren und funktioniert gut. Ich habe versucht, ' console.log ('Clicked')} />' – Leone

+0

Eine Sache, die ich bemerkte, ist, dass Sie die Requisiten nicht an Ihr natives (HTML) Element als 'übergeben sollten

Antwort

3

Sie können die Definition Ihrer Komponente ändern, um die HTML-Taste Requisiten reagieren zu lassen

class MyButton extends React.Component<MyButtonProps & React.HTMLProps<HTMLButtonElement>, {}> { 
    render() { 
     return <button {...this.props}/>; 
    } 
} 

dass das Typoskript Compiler sagen wird, dass Sie die Taste Requisiten eingeben möchten zusammen mit ‚MyButtonProps‘

Verwandte Themen