panelGroup 中
import React from 'react';
import Tab from './Tab.js';
class PanelGroup extends React.Component {
constructor(props) {
super(props);
this.setState({
panels: props.panels
});
}
render() {
this.tabSet = [];
this.panelSet = [];
for (let panelData of this.state.panels) {
var tabIsActive = this.state.activeTab == panelData.name;
this.tabSet.push(React.createElement(
Tab, {
name: panelData.name,
active: tabIsActive,
panelClass: panelData.class,
onMouseDown: () => this.openTab(panelData.name)
}
));
this.panelSet.push(React.createElement(
panelData.class, {
id: panelData.name,
active: tabIsActive,
ref: tabIsActive ? 'activePanel' : null
}
));
}
return React.createElement(
'div', { className: 'PanelGroup' },
React.createElement(
'nav', null,
React.createElement(
'ul', null,
...this.tabSet
)
),
...this.panelSet
);
}
openTab(name) {
this.setState({ activeTab: name });
this.findDOMNode(this.refs.activePanel).focus();
}
}
PanelGroup
例項的 panels
屬性必須包含帶有物件的陣列。那裡的每個物件都宣告有關面板的重要資料:
name
- 控制器指令碼使用的面板識別符號;class
- 小組的類。
不要忘記將屬性 activeTab
設定為所需選項卡的名稱。
澄清
當 tab 關閉時,需要的面板在 DOM 元素上獲得類名 active
(意味著它將可見),現在它已經集中。