程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> (React: Up and Running)閱讀筆記 — The life of a component & Excel: a fancy table component

(React: Up and Running)閱讀筆記 — The life of a component & Excel: a fancy table component

編輯:關於C++

Properties

要把Component的this.props屬性認為是可讀的,properties用來從parent component傳遞configuration給children。

proptypes

可以通過在components中添加一個叫做 propTypes 的property,這個property的值是一個列表,這個列表中定義了component可以接受的屬性以及它們的類型。雖然propTypes是可選的,但是propTypes有兩個優勢:使用這個組件的時候可以直接在propTypes找到對應property的類型,而不用再去render方法中查找;第二個是,React會自動根據propTypes 在運行的時候進行驗證傳入的屬性。

state

React有一個稱為state的概念,是component用來渲染自己的data。當state發生改變時,React不需要我們做額外的事情就可以做到rebuild UI,所以當我們在第一次渲染UI之後,後面我們需要做的事情就是update the data即可,並不需要我們去關心UI的改變。
我們通過 this.state 來訪問state,通過 this.setState() 方法來更新state。當 this.setState() 被調用的時候,React就會調用render()方法來更新UI。調用setState()之後UI的更新是通過使用一個隊列機制實現的,這個隊列機制可以高效地批量更新DOM,所以我們應該使用setState()方法來更新state,而不是直接修改this.state。與this.props類似,我們也應該把this.props當做一個只讀的屬性,這樣可以避免不可知的行為發生。

Event handling in React

React使用自己合成的事件來封裝和規范浏覽器事件,這樣就避免了浏覽器兼容。比如,event.target在所有的浏覽器中這個API都是可用的。events.stopPropagation() 和 events.preventDefault() 方法在低版本的IE中也能使用。
React的語法可以讓UI和event listener很容易結合在一起,這個看起來與老式的inline event handler很相似,但是其實他們背後的實現是完全不一樣的,React實際上使用的event delegation機制,但是這個細節都被React掩蓋了,不需要我們去關注。
React使用 camelCase 語法來寫event handlers,所以不能使用類似onclick,而是要使用onClick。
可以通過event.nativeEvent來獲取原始的浏覽器事件。

Props vs State

Properties 是使用這個component用來配置各種屬性的機制,而State是component內部的數據維護機制。實際上,他們之間的區別更多的是在代碼可維護角度考慮的,所以setProps()方法也是可寫的,但是這樣會讓代碼的可維護性降低。

Changing properties mid-flight

我們之前了解到Properties是用來configure一個component的,所以當一個component被創建之後,在外部是可能有調用setState()方法的,所以我們需要對這種情況進行處理。但是直接調用設置setState()的話,是不會刷新UI的,但是從外部調用setState又有可能造成不可知的狀況發生。我們可以使用componentWillReceiveProps:方法來解決這個問題。切記:可以從component外部調用setProps(),但是不要從外部調用setState(). 遇到這種問題,可以在componentDidUpdate()生命周期中調用this.replaceState()來修改。setState(obj) 會把obj中的properties和現有的this.state合並到一起,但是replaceState()會徹底重寫this.state \



Lifecycle methods

React中每個component都有自己的生命周期,這個跟App開發非常類似。 \


mixin

mixin是一個包含了方法和屬性的JavaScript對象,mixin的意義不是直接去使用mixin這個對象,而是把mixin中的方法和屬性添加到另外一個對象中,例如實現打印生命周期方法的實現: \
\



Excel: a fancy table component

當不使用JSX語法時,需要為component添加一個displayName屬性,用於React報錯時的提示信息;使用JSX的時候,這個屬性已經自動生成了。
錯誤提示: \
解決方式,返回的component數組中的component的key應該在這個array 的loop中是唯一的,不需要在整個React application中唯一。 \


不要直接更改state中的數據,可能會造成一些不可知的情況發生,先把其中的數據copy,然後再進行排序等操作
var self = this的workaround在JSX中的替代方式??

導出JSON或者CSV文件

使用前端blob api實現: \

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved