createClass与class语法

createClass在15.5.0版被废弃,在16中不再支持。

createClass语法

const TestComponent = require('./component/TestComponent');
let myAttr = 12;
const MyComponent = React.createClass({
    render:function(){
        return (<div>这个是组件</div>)
    },
    getInitialState:function(){
        return{
            name:"vine"
        }
    },
    getDefaultProps:function(){
      return {
          age:'12'
      }
    },
    propType:{
        age:React.PropTypes.string
    },
    componentDidMount:function(){},
    runMyMethods:function(){
        console.log('我的方法');
    }

})
module.exports = MyComponent

向React.createClass方法传入类json格式键值对

class 语法

es6类语法

import TestComponent from './component/TestComponent';

const MyComponent extends React.Component{
    render(){
        return (<div>我是一个组件</div>)
    }
    constructor(props){
        super(props);
        this.state = {
            name:"vine"
        }
        this.myAttr = 12;
        this.runMyMethod = this.runMyMethod.bind(this);
    }
    static defaultProps={
        career:'programer'
    }
    static propTypes={
        name:PropTypes.string
    }
    runMyMethod(){
        console.log('调用方法')
    }
}
export default MyComponent;

其他

  • 不管是哪种写法,组件名称的开头字母必须大写