react中createFactory, createClass, createElement分別在什麼場景下使用,為什麼要這麼定義?

react


三者用途稍有不同,按依賴關係調整下順序:

1. createClass,如其名就是創建React組件對應的類,描述你將要創建組件的各種行為,其中只有當組件被渲染時需要輸出的內容的render介面是必須實現的,其他都是可選:

var Hello = React.createClass({
render: function() {
return &Hello Taobao, Hello UED&;
}
});

2. createElement,創建React組件實例,支持type,config,children三個參數:

ReactElement.createElement = function(type, config, children) {
...
}

如我們在jsx中描述的 &< Hello /&> ,編譯後就是 React.createElement(Hello)

3. createFactory,通過工廠方法創建React組件實例,在js里要實現工廠方法只需創建一個帶type參數的createElement的綁定函數:

ReactElement.createFactory = function(type) {
var factory = ReactElement.createElement.bind(null, type);
return factory;
};

創建模式目的是隔離與簡化創建組件的過程,模式的東西自然是可用可不用,如果需要批量創建某個組件時,可以通過工廠方法來實現:

var h = React.createFactory(Hello);
h({x:1})
h({x:2})
h({x:3})


推薦閱讀:

如何評價React v16.0?
阿里還會使用react嗎?
沒有安卓和ios開發經驗的前端適合學rn嗎?
Flux todoMVC 為什麼要費那麼多力氣實現一個功能!!!!,這樣寫的好處是神馬?
如何評價 Airbnb 發布的 React Sketch.app 工具?

TAG:前端開發 | 前端框架 | AngularJS | React |