2014-02-06 36 views
6

在Backbone.js中,您可以使用el屬性或通過調用view.setElement()來指定視圖的元素。React.js:綁定到現有元素

是否有一種將React.js組件連接到現有DOM元素的等效方法?

+0

也許這將有助於... http://stackoverflow.com/questions/27160763/can-a-react-component-manipulate-an-existing-dom-node/34630247#34630247 – gdoumenc

回答

10

我不太熟悉Backbone,但是要將React組件掛接到DOM中,請使用renderComponent函數。第一arg是該組件,和第二個是一個DOM元素:

React.renderComponent(<SampleComponent />, document.getElementById('app')); 

每評價給定的上下文更新:

陣營鉤到一個元件通過替換它的內容,但不是元素本身。您可以在該元素上多次調用renderComponent(),並且每次都會運行相同的差異算法。如果您想傳遞不同的道具,在服務器上預渲染或完全渲染不同的組件,這很方便。每次使用相同的過程來更新實際的DOM,就像在組件本身中使用setState()一樣。

+0

這不是說放置SampleComponent作爲#app的孩子嗎?我認爲OP的目標是用組件替換現有的元素。 –

+0

@EdwardMSmith啊,我不熟悉Backbone的行爲。我會更新我的答案。 –

+1

謝謝 - 是的,爲了澄清,我指的是服務器端加載的元素,如選擇菜單選項,需要知道其默認排序順序是升序還是降序。因此,當頁面加載時,該元素已經存在,我需要使用Backbone/React將其他行爲/數據綁定到它,而無需使用客戶端模板或React組件從頭開始渲染它。如果它更有幫助,我可以擴展我的問題。 – cantera