2017-03-10 29 views
0

我是新來對組件的概念作出反應和混淆。我知道一個組件可以被包含在另一個組件中,但是這次我在一個createClass中看到另一個createClass。createClass在react.js中的createClass

查看源代碼:http://chrisharrington.github.io/demos/react-controls/calendar.html

像116,它是如何看起來像ES6?

+0

在另一個類中沒有'createClass'。他們正在創建** Calendar,DayNames和Week **作爲組件。 – Hosar

+0

@Hosar你可以看看'var DayNames = React.createClass({...})'?爲什麼不只是使用正常的功能?這是一個組件,它在es6中看起來如何? – Mellisa

回答

0

作爲示例,以下是使用React.createClass的組件。

var DayNames = React.createClass({ 
    render: function() { 
    return <div className="week names"> 
     <span className="day">Sun</span> 
     <span className="day">Mon</span> 
     <span className="day">Tue</span> 
     <span className="day">Wed</span> 
     <span className="day">Thu</span> 
     <span className="day">Fri</span> 
     <span className="day">Sat</span> 
    </div>; 
    } 
}); 

這裏它又是一個無狀態函數組件。

function DayNames() { 
    return <div className="week names"> 
    <span className="day">Sun</span> 
    <span className="day">Mon</span> 
    <span className="day">Tue</span> 
    <span className="day">Wed</span> 
    <span className="day">Thu</span> 
    <span className="day">Fri</span> 
    <span className="day">Sat</span> 
    </div>; 
} 

在這裏它又是一個ES2015類。

class DayNames extends React.Component { 
    render() { 
    return <div className="week names"> 
     <span className="day">Sun</span> 
     <span className="day">Mon</span> 
     <span className="day">Tue</span> 
     <span className="day">Wed</span> 
     <span className="day">Thu</span> 
     <span className="day">Fri</span> 
     <span className="day">Sat</span> 
    </div>; 
    } 
} 
+0

在類內部或外部聲明函數組件?我需要將所有內容轉換爲es6。 – Mellisa

+0

函數組件是類組件的替代品。如果你的組件不使用'this.state',你可以使用它們。 –

0

在ES6和上述反應0.14,也可以使用無狀態的功能部件,例如

const DayNames =() => ( 
    <div className="week names"> 
    <span className="day">Sun</span> 
    <span className="day">Mon</span> 
    <span className="day">Tue</span> 
    <span className="day">Wed</span> 
    <span className="day">Thu</span> 
    <span className="day">Fri</span> 
    <span className="day">Sat</span> 
    </div> 
) 
+0

功能是什麼意思?我在這個功能/組件中沒有看到任何功能。這裏不需要'return'嗎? – Mellisa

+0

@Mellisa它是一個函數而不是ES6類,這裏的'function'關鍵字被替換爲'()',那麼不需要'return',因爲它被一個表達式'(...)'包圍起來' –

+0

爲什麼這裏沒有渲染功能? – Mellisa