react元件的建立
最近專案接觸react和rn,之前會一些vue和小程式,起初寫react是很難受的,尤其是jsx的寫法,不過2周過後感覺寫起來有點舒服了。。。
目前react的元件一共有3種方式:React.createClass
,React.Component
,函式式
React.createClass(API已經移除)
這是早期react元件的建立方式,如果你看的文章是幾年之前寫的,很多都是這種方式(比如阮老師這篇React 入門例項教程)
-
React.createClass
現在這一API已經移除,如果非要使用的話需要單獨引入名為 create-react-class 的包) - 栗子
var LikeButton = React.createClass({
getInitialState: function() {
return {liked: false};
},
handleClick: function(event) {
this.setState({liked: !this.state.liked});
},
render: function() {
var text = this.state.liked ? `like` : `haven`t liked`;
return (
<p onClick={this.handleClick}>
You {text} this. Click to toggle.
</p>
);
}
});
ReactDOM.render(
<LikeButton />,
document.getElementById(`example`)
);
React.Component
使用ES6的語法,是
React.createClass
的替代,也是目前用的最多的一種方式
- 栗子
class LikeButton extends Component {
constructor(props) {
super(props)
this.state = { like: false }
}
componentWillMount (){...}
componentDidMount (){...}
handleClick() {
this.setState({ like: !this.state.like })
}
render() {
let text = this.state.like ? `like` : `don`t like`;
return (
<p onClick={() => { this.handleClick() }}>
you {text} this.click to toggle
</p>
)
}
}
- 繫結this的方式:和
createClass
不同,React.Component
是不會自動繫結this的,所以需要我們手動,一般有下面幾種方式- constructor中繫結
constructor(props) { super(props); this.handleClick = this.handleClick.bind(this); //建構函式中繫結 } 然後可以<p onClick={this.handleClick}>
- 使用時繫結
<p onClick={this.handleClick.bind(this)}>
- 箭頭函式
<p onClick={() => { this.handleClick() }}>
無狀態函式式
這種元件不會被例項化,只負責根據傳入的props來展示,不涉及到state,生命週期和this。在大部分React程式碼中,大多陣列件被寫成無狀態的元件,通過簡單組合可以構建成其他的元件等;這種通過多個簡單然後合併成一個大應用的設計模式被提倡。
- 栗子
//子元件
const LikeButton=(props)=>{
let text = props.like ? `like` : `don`t like`;
return(//注意不是props.handleClick()
<p onClick={props.handleClick}>you {text} this.click to toggle</p>
)
}
//父元件
constructor(props) {
super(props)
this.state = {
like:false
}
}
handleClick() {
this.setState({ like: !this.state.like })
}
render() {
return ( //傳入props
<LikeButton handleClick={()=>{this.handleClick()}} like={this.state.like}/>
)
}
總結
大多陣列件都可以使用函式式元件
,因為他很簡潔,沒有例項化過程和生命週期所以效能非常出色;而其他情況可以使用React.Component
;至於React.createClass
就可以放棄了;
最後
大家好,這裡是「 TaoLand 」,這個部落格主要用於記錄一個菜鳥程式猿的Growth之路。這也是自己第一次做部落格,希望和大家多多交流,一起成長!文章將會在下列地址同步更新……
個人部落格:www.yangyuetao.cn
小程式:TaoLand
相關文章
- react建立的元件中bind的使用React元件
- 建立 React 元件三種“姿勢”React元件
- react 之 ES6建立元件的知識React元件
- 如何建立React元件併發布到npm?React元件NPM
- React 元件建立方法及父元件向子元件傳參(基礎)React元件
- react篇章-React 元件-複合元件React元件
- React的元件模式React元件模式
- React篇章-React 元件React元件
- [譯] 單元素元件模式簡介:使用 React 或其它元件庫建立可靠元件的規則和實踐元件模式React
- React元件React元件
- react hooks 如何自定義元件(react函式元件的封裝)ReactHook元件函式封裝
- React的非同步元件React非同步元件
- react 元件的屬性React元件
- react篇章-React 元件-向元件傳遞引數React元件
- 用 nodejs 寫一個命令列工具 :建立 react 元件的命令列工具NodeJS命令列React元件
- (React啟蒙)理解React 元件React元件
- [譯] React 中的 dumb 元件和 smart 元件React元件
- React拖拽元件React元件
- React高階元件的使用React元件
- 獲取React元件的DOMReact元件
- React構建元件的方式React元件
- React元件複用的方式React元件
- react複合元件的使用React元件
- React中的高階元件React元件
- vue與react元件的思考VueReact元件
- 說說React元件的StateReact元件
- 拖拽元件:React DnD 的使用元件React
- [React]元件的生命週期React元件
- 自定義元件-元件的建立和引用元件
- [譯] React 路由和 React 元件的愛恨情仇React路由元件
- react、JSX編譯原理、生命週期、屬性、狀態改變、建立元件、複合元件間的資訊傳遞、受控和非受控元件、react腳手架ReactJS編譯原理元件
- React Native 元件(一)元件的生命週期React Native元件
- react元件(react-grid-gallery)React元件
- React受控元件和非受控元件React元件
- Chat-React基於react的聊天會話元件React會話元件
- React 也就這樣 01——React 元素的建立和渲染React
- React 基礎_元件React元件
- React 非同步元件React非同步元件