React 入門指南
Hello,World!
React是現在比較主流的前端框架,我們這次入門指南,旨在讓大家瞭解和認識什麼是React,我們的重點不是精通React,重點是“從0到1”這樣一個過程。
React的設計思想十分獨特,是革命性的創新,他的效能十分出眾,程式碼邏輯十分簡單和清晰,這使得越來越多的人加入React這個大框架中來。
這也是我們實際工作中需要做的--給使用者帶來價值。
現在我們進行由階段的練習,先從“Hello,World!”開始。
React 容易上手,並且需要的基本都是基礎知識,這對前端初學者來說是十分親切的,下面我們通過進行每一個Demo來逐步的揭開React的神祕面紗。
安裝和使用
React 的安裝包,你可以快速的在其官網上下載到,不過在我的github上自帶了React的原始碼,不用另外安裝,只需要把這個庫拷到你的硬碟上就行! https://github.com/AleenL/React.git
做到了上面的步驟,我們就可以做我們的第一個例子了。
React 的 HTML 模版
使用React的網頁原始碼,結構大致如下;
<!DOCTYPE html>
<html lang="en">
<head>
<script src="../build/react.js"></script>
<script src="../build/react-dom.js"></script>
<script src="../build/browser.min.js"></script>
</head>
<body>
<div id="index"></div>
<script type="text/babel">
/* There is your code*/
</script>
</body>
</html>
上面的程式碼有兩個地方需要注意,最後一個script標籤裡的type屬性為text/babel這是React所特有的JSX語法,是和JavaScript 不相容的,凡事使用 JSX 的地方, 都要加上 type="text/babel"。
程式碼分別有三個庫, React.js、react-dom.js和Browser.js,他們必須首先載入,所以要放在head標籤中,其中react.js是React的核心哭,react-dom.js是提供與DOM相關的功能,browser.js的作用是將JSX 語法莊轉為 avaSctipr 語法,這一步十分浪費時間,所以上線的時候,應該將他放在伺服器中完成。
第一個Demo
ReactDOM.render 是 React 的基本方法,用於將模版轉為 HTML 語言,並插入指定的 DOM 節點。
ReactDOM.render(
<h1>Hello,world!</h1>,
document.getElementById("index") );
這段程式碼插入最後一個Script標籤中,意思是將一個 h1 標題插入了 index節點中,執行結果如下。
快速啟動一個React頁面!
macOS 或者 Linux 當中用create-react-app可以快速啟動一個React頁面:
npm install -g create-react-app
create-react-app my-app
cd my-app/
npm start
然後開啟src/App.js編輯頁面內容即可,頁面服務在 http://localhost:3000/
JSX
React支援的的JSX語法能夠讓HTML的語言直接解除安裝啊JavaScript語言之中,不需要加任何引號,它允許HTMl和JavaScript混寫。
var speeds = [23,45,56];
ReactDOM.render(
<div>
{
speeds.map(function(speed){
return <div>This Car speed is {speed} km/h!</div>
})
}
</div>,
document.getElementById('index')
)
上述的程式碼體現了JSX的基本規則,就是遇到HTML標籤就用HTML的會澤解析;遇到JavaScript,就用JavaScript規則解析。
JSX允許直接在模版內插入JavaScript的變數,如果這個變數時一個陣列就會遍歷這個陣列。
var arr = [
<li>this is one</li>,
<li>this is two</li>,
<li>this is three</li>,
];
ReactDOM.render(
<ul>{arr}</ul>,
document.getElementById('index')
);
模組化
React 允許將程式碼封裝成元件,然後像插入HTML的標籤一樣,在網頁中插入這個元件。使用React.createrClass方法進行生成元件。 JSX中使用’{}’符號來定義變數。
我們可以使用ES6類來定義元件:
class HelloMessage extends React.Component {
render() {
return <h1>Hello,{this.props.name}</h1>
}
ReactDOM.render(
<HelloMessage name = "World" />,
document.getElementById('index')
} 我們也可以正常的使用JSX進行定義元件,兩個效果時相同的:
var HelloMessage = React.createClass({
render :function(){
return <h1>Hello {this.props.name}</h1>;
}
});
ReactDOM.render(
<HelloMessage name = "World" />,
document.getElementById('index')
)
上述程式碼中,HelloMessage 就是一個元件類。模版插入時會自動生成一個HelloMessage的例項,所有的元件類都有自己的render用於輸出元件。
在對元件進行命名的時候,首字母必須要大寫,不然瀏覽器會報錯,另外,元件類職能包含一個HTML的頂層標籤,其他標籤必須包裹在頂層標籤內,不然瀏覽器也會報錯。
元件的用法和HTML的標籤完全一致,可以任意加入該元件的屬性這個表示了該元件加入了一個 speed 值,他的值為32,元件的屬性可以在元件類的this.props物件中獲取,比如speed屬性就可以通過this.props.speed讀取。
當然,變數也可以表示使用者定義的元件:
var HelloMessage = React.createClass({
render :function(){
return <h1>Hello {this.props.name}</h1>;
}
});
const element = <HelloMessage name = "World" />;
ReactDOM.render(
element,
document.getElementById('index')
)
有些元件屬性在命名上要注意,比如class,for屬性需要寫成className,htmlFor。因為這個事JavaScript的保留字。
PropTypes
元件的屬性可以接受任何值,字串,物件,函式等,又是我們想要驗證元件的屬性是否符合要求的時候,這個時候就要用到PropsType的屬性。
元件類的PropTypes屬性,是用來驗證元件例項的屬性是否符合要求:
var data ="123";
var MyTitle = React.createClass({
propTypes: {
title: React.PropTypes.string.isRequired,
},
render: function() {
return <h1>{this.props.title}</h1>
}
});
ReactDOM.render(
<MyTitle title={data} />,
document.body
);
MyTitle元件新增了title屬性,PropTypes告訴React,這個title的屬性的值必須為字串,如果上述的data變數不是字串的話,瀏覽器就會報錯。
此外getDefaultProps方法可以用來設定元件屬性的預設值:
var MyTitle = React.createClass({
getDefaultProps : function(){
return {
title : 'this is title!!'
};
},
render: function() {
return <h1>{this.props.title}</h1>;
}
});
ReactDOM.render(
<MyTitle />,
document.body
);
生命週期
人類的生命週期是:生 -> 老 -> 病 -> 死。
其實每個元件都有自己的“生命週期”,一個元件都經歷了,執行和完成,那麼React元件的生命週期是什麼呢?
React 的生命週期包括三個階段:mount(掛載)、update(更新)和 unmount(移除)
mount(掛載)
mount就是第一次讓元件出現在頁面周的過程。這個過程的關鍵就是render方法。React 會將 render 的返回值(一般是虛擬DOM,也可以事DOM或者null)插入到頁面中。
這個期間,會有幾個hook方便你往裡面加程式碼:
- constructor()
- componentWillMount()
- render()
- componentDidMount()
update(更新)
mount 之後,如果資料有任何變動,就會來到update過程,這個過程會出現五個hook:
1.componentWillReceiveProps(nextProps) -讀取props 2.shouldComponentUpdate(nextProps, nextState) -是否需要更新元件 3.render() -進行更新 4.componentDidUpdate() -更新完畢
unmount(解除安裝)
當一個元件將要從頁面移除的時候,會進入unmount過程,這個過程就只有一個hook: 1.componentWillUnmount() -移除元件前你可以進行的活動
相關文章
- React實戰入門指南React
- React Mixins入門指南React
- React入門指南(學習筆記)React筆記
- React 高階元件(HOC)入門指南React元件
- react入門React
- 【小入門】react極簡入門React
- Android程式猿的react學習之路-入門指南篇AndroidReact
- React快速入門React
- 快速入門reactReact
- React 入門教程React
- React 快速入門React
- React+Redux入坑指南ReactRedux
- React入門---react腳手架React
- Zookeeper入門指南
- CPack 入門指南
- Docker 入門指南Docker
- numpy入門指南
- EOS 入門指南
- Vue 入門指南Vue
- RabbitMQ入門指南MQ
- Nginx入門指南Nginx
- Vagrant 入門指南
- Flask 入門指南Flask
- gulp入門指南
- OSWorkFlow入門指南
- CouchDB 入門指南
- RxJava入門指南RxJava
- ODA入門指南
- MySQL 入門指南MySql
- Markdown入門指南
- React Hooks 入門教程ReactHook
- React入門到使用React
- React Hook快速入門ReactHook
- React入門總結React
- React Hook 入門使用ReactHook
- React新手入門 教程React
- React+GraphQL入門React
- React入門學習React