鍍金池/ 教程/ HTML/ JSX 展開屬性
顯示數(shù)據(jù)
組件的引用
Controlled Input 值為 null 的情況
Reconciliation
子 props 的類型
組件的詳細說明和生命周期
傳遞 Props
特殊的非 DOM 屬性
組件 API
PureRenderMixin
雙向綁定輔助工具
瀏覽器中的工作原理
深入 JSX
表單組件
Dangerously Set innerHTML
入門
JSX 中的 If-Else
克隆組件
教程
更多的關(guān)于Refs
JSX 的 false 處理
高級性能
Mounting 后 componentWillReceiveProps 未被觸發(fā)
簡介
測試工具集
JSX 陷阱
工具集成(ToolingIntegration)
公開組件功能
通過 AJAX 加載初始數(shù)據(jù)
事件系統(tǒng)
可復(fù)用組件
this.props.children undefined
不可變數(shù)據(jù)的輔助工具(Immutability Helpers)
動態(tài)交互式用戶界面
組件的 DOM 事件監(jiān)聽
復(fù)合組件
動畫
插件
JSX 展開屬性
行內(nèi)樣式
性能分析工具
類名操作
與其他類庫并行使用 React
鍵控的片段
標簽和屬性支持
組件間的通信
React (虛擬)DOM 術(shù)語
JSX 根節(jié)點的最大數(shù)量
在樣式props中快速制定像素值
頂層 API
深入理解 React
自閉合標簽
為什么使用 React?
getInitialState 里的 Props 是一個反模式
與 DOM 的差異

JSX 展開屬性

如果你事先知道組件需要的全部 Props(屬性),JSX 很容易地這樣寫:

  var component = <Component foo={x} bar={y} />;

修改 Props 是不好的,明白嗎

如果你不知道要設(shè)置哪些 Props,那么現(xiàn)在最好不要設(shè)置它:

  var component = <Component />;
  component.props.foo = x; // 不好
  component.props.bar = y; // 同樣不好

這樣是反模式,因為 React 不能幫你檢查屬性類型(propTypes)。這樣即使你的 屬性類型有錯誤也不能得到清晰的錯誤提示。

Props 應(yīng)該被當作禁止修改的。修改 props 對象可能會導(dǎo)致預(yù)料之外的結(jié)果,所以最好不要去修改 props 對象。

展開屬性(Spread Attributes)

現(xiàn)在你可以使用 JSX 的新特性 - 展開屬性:

  var props = {};
  props.foo = x;
  props.bar = y;
  var component = <Component {...props} />;

傳入對象的屬性會被復(fù)制到組件內(nèi)。

它能被多次使用,也可以和其它屬性一起用。注意順序很重要,后面的會覆蓋掉前面的。

  var props = { foo: 'default' };
  var component = <Component {...props} foo={'override'} />;
  console.log(component.props.foo); // 'override'

這個奇怪的 ... 標記是什么?

這個 ... 操作符(增強的操作符)已經(jīng)被 ES6 數(shù)組 支持。相關(guān)的還有 ES7 規(guī)范草案中的 Object 剩余和展開屬性(Rest and Spread Properties)。我們利用了這些還在制定中標準中已經(jīng)被支持的特性來使 JSX 擁有更優(yōu)雅的語法。

上一篇:性能分析工具下一篇:測試工具集