早上吳老師帶我們快速過了一下react的基礎知識,由於之前預習過,還是基本能聽懂的,但是還是有些點需要自己回頭鞏固。下午盡量使用react把上週的作業進行重構
react建立元件的三種方式及其區別
react推出後,出於不同的原因先後出現三種定義react元件的方式,殊途同歸;具體的三種方式:
函式式定義的無狀態元件
es5原生方式react.createclass定義的元件
es6形式的extends react.component定義的元件
1.無狀態函式式元件形式上表現為乙個只帶有乙個render方法的元件類,通過函式形式或者es6 arrow function的形式在建立,並且該元件是無state狀態的。具體的建立形式如下:
function hellocomponent(props, /* context */)
}reactdom.render(, mountnode)
2.react.createclass與react.component區別
(1)函式this自繫結
react.createclass建立的元件,其每乙個成員函式的this都有react自動繫結,任何時候使用,直接使用this.method即可,函式中的this會被正確設定。
react.component建立的元件,其成員函式不會自動繫結this,需要開發者手動繫結,否則this不能獲取當前元件例項物件
當然,react.component有三種手動繫結方法:可以在建構函式中完成繫結,也可以在呼叫時使用method.bind(this)來完成繫結,還可以使用arrow function來繫結。
constructor(props)
//使用bind來繫結
handlebuttonclick=() =>
})}
(2)元件初始狀態state的配置不同
react.createclass建立的元件,其狀態state是通過getinitialstate方法來配置元件相關的狀態;
react.component建立的元件,其狀態state是在constructor中像初始化元件屬性一樣宣告的。
(3)推薦使用
採用class的方式,**結構更加清晰,可讀性強,而且react官方也推薦使用這種方式定義元件。
過程中遇到的問題
1.import json的時候,由於 webpack的配置檔案裡的正則設定錯誤,導致loader無法正確載入json.
錯誤如下
test:/.*\.jsx?/,
正確的是去掉問號,否則他會把json與jsx一起進行轉譯
test:/.*\.jsx/,
2.在react裡如何取到dom元素。
不推薦的做法是像原生js的寫法一樣,給標籤加上id。
應當使用ref屬性(注意該屬性跟id一樣,同一值應當是唯一的),如下**:
componentdidmount()
});} render()
) }
}
而且,應當將函式執行在componentdidmount()裡,因為未render時,並找不到該子節點。
3.箭頭函式作為類的方法宣告時,需要外掛程式支援,需要install babel-preset-stage-0才能編譯,否則會報錯
handleclick=() =>
1.安裝
裝完之後,生成乙個新的專案,可以使用下面的命令:
npm start
注,預設埠是3030;
react部分規範
1.屬性統一小寫,元件首字母大寫,不然無法識別。
2018 07 11 漢得日記
今天下午進行了前端知識的摸底考核,交卷之後發現自己仍有很多不明白的知識點,所以在查資料的過程中總結了以下幾點 html中 1.ie無法調整那些使用px作為單位的字型大小 2.國外的大部分 能夠調整的原因在於其使用了em或rem作為字型單位 3.firefox能夠調整px和em,rem,但是96 以上...
2018 07 16 漢得日記
上午複習了上週的docker知識,並順利完成了上週作業。並編寫了 readme 但是在push到github上時出現了各種奇怪的問題,還待解決。我的github部落格 下午有部門經理來進行了我們研發中心的情況介紹,重點在於開源的企業級pass平台,豬齒魚開源社群。學習敏捷,構建高效團隊。團隊合作至關...
漢得面試題
盒子一共有四個屬性 分別為外邊距 margin 邊框 border 內邊距 padding 內容 content 注 如何計算寬度 盒子總大小的計算公式為 盒子的實際高度x盒子的實際寬度。元素實際寬度 盒子的寬度 左邊界 左邊框 左填充 內容寬度 右填充 右邊框 右邊界。元素實際寬度 盒子的高度 上...