, . , ( ):
React.renderComponent(<Tabs><Tab isSelected = true title="Tab1"></Tab><Tab title="Tab2"></Tab></Tabs>, document.getElementById('content'));
var Tab = React.createClass({
render: function() {
return (
<li className={"tab " + (this.props.isSelected ? "selected" :"") }>
{this.props.title}
</li>
);
} });
, usecase, tabs, , Tabs, . , :
http://jsfiddle.net/kb3gN/7180/
var TabHeader = React.createClass({
render: function() {
return (
<li className={"tabHeader " + this.props.className}
onClick={this.props.onClick}>
{this.props.header}
</li>
);
}
});
var TabContent = React.createClass({
render: function() {
return (
<div className={"tabContent " + this.props.className}>
{this.props.content}
</div>
);
}
});
var Tabs = React.createClass({
getInitialState: function(){
return {
selectedTabNo : this.props.initialSelected ? this.props.initialSelected : 0
}
},
getHeaderClass : function(i){
return this.state.selectedTabNo == i ? "selected" : "";
},
getContentClass : function(i){
return this.state.selectedTabNo == i ? "selected" : "hidden";
},
handleClick: function(i,e){
this.setState({selectedTabNo:i});
e.preventDefault();
},
render: function() {
var headers = [];
var i = 0;
this.props.tabs.forEach(function(tab){
headers.push(<TabHeader header={ tab.header }
key={"tab"+i}
onClick = {this.handleClick.bind(this,i)}
className = {this.getHeaderClass(i)} />);
i++;
}.bind(this));
var contents = [];
i=0;
this.props.tabs.forEach(function(tab){
contents.push(<TabContent content={ tab.content }
key={"content"+i}
className = {this.getContentClass(i)} />);
i++;
}.bind(this));
return (
<div className="tabsContainer">
<ul className="tabHeadings">
{headers}
</ul>
{contents}
</div>
);
}
});
var App = React.createClass({
render: function() {
return( <Tabs initialSelected={2}
tabs={[{header:"step1", content:<div>This is page 1</div>},
{header:"step2", content:<div>This is page 2</div>},
{header:"step3", content:<div>This is page 3</div>} ]} /> );
}
});
React.render(<App />, document.body);