2016-08-28 17 views
1

當我宣佈內部類getDefaultProps功能是從React.Component繼承這個給錯誤,如下面getDefaultProps與之反應組件類

enter image description here

我設置的條件在構造函數初始化propsundefined

import React from "react" 
import ReactDOM from "react-dom" 

class App extends React.Component{ 
    propTypes:{ 
     techstack : React.PropTypes.string 
    } 

    constructor(){ 
     super(); 
     this.props.techstack === undefined ? "Rails" : '' 
     console.log(this.props); 
    } 

    render(){ 
     return (<div> 
       <h2>{this.props.techstack} Rocks</h2> 
       </div> 
       ) 
    } 
} 

ReactDOM.render(<App/>,document.getElementById("app")); 

感謝提前的幫助

回答

2

React的0.13版本之後,props必須是不可變的。既然如此,getDefaultProps不再是有意義的功能和需要重構出的構造屬性,所以

import React from "react" 
import ReactDOM from "react-dom" 

class App extends React.Component{ 
    propTypes:{ 
     techstack : React.PropTypes.string 
    } 

    constructor(){ 
     super(); 
     this.props.techstack === undefined ? "Rails" : '' 
     console.log(this.props); 
    } 

    render(){ 
     return (<div> 
       <h2>{this.props.techstack} Rocks</h2> 
       </div> 
       ) 
    } 
} 
    App.defaultProps = {key: 'value'}; 

ReactDOM.render(<App/>,document.getElementById("app")); 
+1

感謝其工作 – uzaif

+0

愉快的編碼。 :) –

1

嘗試是這樣的:

import React from "react" 
import ReactDOM from "react-dom" 

class App extends React.Component{ 
    propTypes:{ 
     techstack : React.PropTypes.string 
    } 

    constructor(){ 
     super(); 
     this.props.techstack === undefined ? "Rails" : '' 
     console.log(this.props); 
    } 

    render(){ 
     return (<div> 
       <h2>{this.props.techstack} Rocks</h2> 
       </div> 
       ) 
    } 
} 

App.defaultProps = { prop: 'value' }; 

ReactDOM.render(<App/>,document.getElementById("app")); 
1

該提示是錯誤消息,您需要使用靜態關鍵字:

import React from "react" 
import ReactDOM from "react-dom" 

class App extends React.Component{ 

    static propTypes:{ 
     techstack : React.PropTypes.string 
    } 

    static defaultProps: { 
     techstack: 'Rails' 
    } 

    constructor(props){ 
     super(props); 
     console.log(props); 
    } 

    render(){ 
     return (<div> 
       <h2>{this.props.techstack} Rocks</h2> 
       </div> 
       ) 
    } 
} 

ReactDOM.render(<App/>,document.getElementById("app")); 
+0

你在哪裏控制檯記錄它雖然,怎麼樣?您應該利用defaultProps,而不是手動檢查各處undefined – Chris