元素与组件
如果代码多了之后,不可能一直在render方法里写,所以就需要把里面的代码提出来,定义一个变量,像这样:
import React from 'react'
import ReactDOM from 'react-dom'
// 这里感觉又不习惯了?这是在用JSX定义一下react元素
const app = <h1>欢迎进入React的世界</h1>
ReactDOM.render(
<div>
{ app }
</div>
document.getElementById('root')
)
函数式组件
这里我们定义的方法实际上也是react定义组件的第一种方式-定义函数式组件,这也是无状态组件。
import React from 'react'
import ReactDOM from 'react-dom'
/*
const 组件名(首字母大写)=(props)=>{
return jsx表达式
}
*/
const App = (props) => {
return (
<h1>欢迎进入{props.name}的世界</h1>
)
}
ReactDOM.render(
// React组件的调用方式
<App name={"react"} />,
document.getElementById('root')
)
这样一个完整的函数式组件就定义好了。但要注意!注意!注意!组件名必须大写,否则报错。
class组件
ES6的加入让JavaScript直接支持使用class来定义一个类,react的第二种创建组件的方式就是使用的类的继承ES6 class
是目前官方推荐的使用方式,它使用了ES6标准语法来构建,看以下代码:
import React from 'react'
import ReactDOM from 'react-dom'
/*
class 组件名 extends React.Component {
render(){ //render是必不可少的钩子函数
return jsx表达式
}
}
*/
class App extends React.Component {
render () {
return (
// 注意这里得用this.props.name, 必须用this.props
<h1>欢迎进入{this.props.name}的世界</h1>
)
}
}
ReactDOM.render(
<App name="react" />,
document.getElementById('root')
)
更老的一种方法:
在15.x的版本只能这样创建组件, 但现在的项目基本上不用
React.createClass({
getInitialState(){ //定义组件初始化状态
},
getDefaultProps(){ //定义组件的默认属性
},
render () {
return (
<div>hello world</div>
)
}
})