摘要:而我只知道有自己的虛擬,它會對比虛擬和真實的差別,然后在適當的時機更新頁面。函數的第一個參數只能是一個標簽,不能是并列的兩個標簽。第一個添加了的屬性,該屬性值指向,意思是該組件名為的靜態屬性。
網頁總是一個鏈接著另一個的,React一大優勢在于每次鏈接到另一個頁面上去的時候,不需要向傳統頁面一樣,得銷毀所有代碼,重新渲染新頁面的代碼,而只在一個頁面上展現新的內容——單頁頁面。
React另一個優勢是,以往的單頁頁面你需要考慮哪個元素要被刪除、哪個元素的行為要被修改,而我們只需要告訴React我們想要的最終頁面的效果,React會自動幫我們處理頁面上的元素,做刪除、修改等操作。
而我只知道React有自己的虛擬DOM,它會對比虛擬DOM和真實DOM的差別,然后在適當的時機更新頁面。至于它怎么對比的?怎么知道差別的?怎么進行修改的?我不知道,不過,對于我們,誰在乎呢?
必須首先知道的關于React的術語JSX語法:React特有語法,用來搭建虛擬DOM
組件(Component):一個個代碼塊,用來封裝各種功能,可以類比于函數(function)
props&status:組件的所有靜態屬性 & 所有動態屬性
引入React想要使用React,你需要先引入:
上面兩個引入了React的核心庫,最后一句引入jsx語法編譯器,因為瀏覽器不懂jsx只知道javascript,所以,引入編譯器轉換為瀏覽器能懂的javascript語言
請參考React官方文檔以獲取最新版本React的引入:https://reactjs.org/docs/add-...
初步使用React并沒有什么特別的技巧,先看代碼,再做解釋:
React First Try
解釋:
首先引入了三個
新建一個元素
我們必須在一個
像一般的javascript語法一樣,我們先獲取頁面元素
var container = document.querySelector("#container");
修改虛擬DOM,并渲染真實DOM
其中,ReactDOM.render();就是在渲染,其含義是將第一個參數渲染到第二個參數下。而第一個參數
ReactDOM.render(, container );Batman
catwoman
效果、頁面結構
我們看到,頁面中已經添加了包含兩個
元素的 上面的方法是直接將你想要的寫在React.render()里,通常的做法是引用組件
定義一個組件
組件里可以添加很多功能,比如想要添加一個按鈕,你只需直接寫你想要的DOM結構,而不需要使用javascript語法:createElement()、appendChild()等
在組件里寫好你想要的東西,使用React.render()進行渲染
完整代碼可以如下 效果、頁面結構 我們看到,頁面上出現了我們想要的按鈕,頁面結構里也成功添加了標簽。注意!!!組件名首字母必須大寫!!!引用組件注意代碼<組件名/>,一個符號都不能錯的!!!
props用來獲取組件的靜態屬性,可以先看下面的一個小例子: 不必驚慌,修改的地方只有組件的render()和實際渲染的render()兩個函數。 第一個render()添加了的type屬性,該屬性值指向{this.props.buttontype},意思是該組件名為buttontype的靜態屬性。這個render()還將的顯示文字指向{this.props.children},意思是該組件的子元素這個靜態屬性 第二個render()函數添加了
結論就是:在渲染真實DOM的時候,會創建一個標簽,它的type屬性值為submit,文字顯示為Batman
效果、頁面結構,哈哈哈,沒啥區別,沒區別就對了: props只能從父元素向下傳遞給子元素: 當有多個屬性你想傳遞的時候,你的代碼可能就會是這樣的,會重復很多遍{this.props.propsName}: 如果你不想重復很多遍繁瑣的{this.props.propsName},那你可以使用擴展運算符...表示取到所有的靜態屬性并且都使等于{this.props.propsName},所以我們的代碼可以稍作簡化:class 組件名 extends React.Component(
//your code
);
class 組件名 extends React.Component(
render(){
return ();
}
);
React.render(
<組件名/>,
想要渲染的位置
)