Ich habe kürzlich angefangen, React zu lernen und wollte einen Tab erstellen, um zu sehen, wie weit mein Wissen gegangen ist. Ich bin darauf gestoßen und habe beschlossen, etwas ohne Redux zu implementieren. Ich habe das Gefühl, dass die Antworten nicht widerspiegeln, was op erreichen möchte. Er möchte nur eine aktive Komponente, aber die Antworten hier setzen alle Komponenten aktiv. Ich habe es versucht.
Unten ist eine Tab-Datei
import React, { Component } from 'react';
class Tab extends Component {
render(){
const tabClassName = "col-xs-3 tab-bar";
const activeTab = this.props.activeKey === this.props.keyNumber ? "active-tab" : null;
return (
<div
className = {`${tabClassName} ${activeTab}`}
onClick={()=>this.props.onClick(this.props.keyNumber)}
>
I am here
</div>
);
}
}
export default Tab;
Die Tabs-Datei ...
import React, { Component } from 'react';
import Tab from './tab';
class Tabs extends Component {
constructor(props){
super(props);
this.state = {
currentActiveKey: 0,
tabNumber: 2
};
this.setActive = this.setActive.bind(this);
this.setTabNumber = this.setTabNumber.bind(this);
}
setTabNumber(number){
this.setState({
tabNumber: number
});
}
setActive (key){
this.setState({
currentActiveKey: key
});
}
render(){
let tabs = [];
for(let i = 0; i <= this.state.tabNumber; i++){
let tab = <Tab key={i} keyNumber={i} onClick={this.setActive} activeKey={this.state.currentActiveKey}/>;
tabs.push(tab);
}
return (
<div className="row">
{tabs}
</div>
);
}
}
export default Tabs;
Ihre Indexdatei ...
import React from 'react';
import ReactDOM from 'react-dom';
import Tabs from './components/tabs';
ReactDOM.render(
<Tabs />
, document.querySelector('.container'));
und die CSS
.tab-bar {
margin: 10px 10px;
border: 1px solid grey;
}
.active-tab {
border-top: 1px solid red;
}
Dies ist ein Grundgerüst für etwas, das ich verbessern möchte. Wenn Sie also die tabNumber über 4 hinaus erhöhen, wird das CSS beschädigt.