1 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個贊
一個組件,有自己的結(jié)構(gòu),有自己的邏輯,有自己的樣式,會依賴一些資源,會依賴某些其他組件。比如日常寫一個組件,比較常規(guī)的方式:
- 通過前端模板引擎定義結(jié)構(gòu)
- JS文件中寫自己的邏輯
- CSS中寫組件的樣式
- 通過RequireJS、SeaJS這樣的庫來解決模塊之間的相互依賴,
那么在React中是什么樣子呢?
結(jié)構(gòu)和邏輯
在React的世界里,結(jié)構(gòu)和邏輯交由JSX文件組織,React將模板內(nèi)嵌到邏輯內(nèi)部,實(shí)現(xiàn)了一個JS代碼和HTML混合的JSX。
結(jié)構(gòu)
在JSX文件中,可以直接通過 React.createClass 來定義組件:
var CustomComponent = React.creatClass({
render: function(){
return (<div className="custom-component"></div>);
}
});
通過這種方式可以很方便的定義一個組件,組件的結(jié)構(gòu)定義在render函數(shù)中,但這并不是簡單的模板引擎,我們可以通過js方便、直觀的操控組件結(jié)構(gòu),比如我想給組件增加幾個節(jié)點(diǎn):
var CustomComponent = React.creatClass({
render: function(){
var $nodes = ['h','e','l','l','o'].map(function(str){
return (<span>{str}</span>);
});
return (<div className="custom-component">{$nodes}</div>);
}
});
通過這種方式,React使得組件擁有靈活的結(jié)構(gòu)。那么React又是如何處理邏輯的呢?
邏輯
寫過前端組件的人都知道,組件通常首先需要相應(yīng)自身DOM事件,做一些處理。必要時候還需要暴露一些外部接口,那么React組件要怎么做到這兩點(diǎn)呢?
事件響應(yīng)
比如我有個按鈕組件,點(diǎn)擊之后需要做一些處理邏輯,那么React組件大致上長這樣:
var ButtonComponent = React.createClass({
render: function(){
return (<button>點(diǎn)擊就送</button>);
}
});
- 1 回答
- 0 關(guān)注
- 583 瀏覽
添加回答
舉報(bào)