2016-08-06 21 views
1

Wie kann ich die Standardwerte von Eigenschaften in React-Komponenten festlegen, wenn Sie mit Typescript arbeiten?Wie Standardeigenschaftswerte in Reagieren mit Typescript festgelegt werden?

Ich sah von einem anderen question auf SE, dass ich eine statische Klassenvariable von defaultProps als ein Objekt mit seinen Schlüsseln meine Eigenschaften erklären konnte, aber das scheint nicht für mich zu arbeiten.

Irgendwie wurde die statische Variable defaultProps von nirgendwo aufgerufen und die Eigenschaften haben immer noch nicht ihre Standardwerte.

+2

Können wir Ihre [MCVE] (http://stackoverflow.com/help/mcve)? :) – Alex

+2

Konnten Sie etwas Code zur Verfügung stellen? Das Definieren von 'defaultProps' als statische Klassenvariable funktioniert für mich. – 1ven

+0

Mögliches Duplikat von [Standardeigenschaftswert in React-Komponente mit TypeScript] (http://stackoverflow.com/questions/37282159/default-property-value-in-react-component-using-typescript) – mixel

Antwort

-1

Hier ist, wie ich es im Konstruktor tun:

interface iProps { 
    value?: any; 
    disabled?: boolean; 
} 

export class MyComponent extends React.Component<iProps, {}> { 
    private value: any; 
    private disabled: boolean; 

    constructor(props: iProps) { 
     super(props); 

     var value: any = ""; 
     if (typeof this.props.value !== "undefined") { 
     value = this.props.value; 
     } 

     var disabled: boolean = false; 
     if (this.props.disabled) { 
     disabled = true; 
     } 
    } 

    handleClick(event) { 
     //Bla bla bla 
    } 

    render() { 
     return (
     <div> 
      <button onClick={this.handleClick.bind(this) } disabled={this.disabled}> 
       my button 
      </button> 
     </div> 
    ); 
    } //end render. 

    componentDidMount() { 
     //Bla bla bla 
    } 

    componentDidUpdate() { 
     //Bla bla bla 
    } 
} //end class. 
+0

Dieser Code wird nicht funktionieren, wenn Rendern Sie MyComponent zuerst mit disabled = true und entfernen Sie dann die Prop-Komponente im nächsten Render-Vorgang. – truppo