2017-09-07 6 views
0

J'essaie de faire une simple glissière dans la barre latérale avec React.JS. La fonctionnalité que je souhaite mettre en œuvre consiste à couvrir le composant barre latérale avec le composant de contenu principal.Réagir dans la barre latérale

Je pense avoir ajouté le code nécessaire pour cette fonctionnalité mais cela ne fonctionne pas. Ce serait génial si quelqu'un pouvait regarder dans mon code .. merci d'avance.

React

class Sidebar extends React.Component { 
render(){ 
return(
<div className="sidebar"> 
<ul> 
    <li>menu1</li> 
    <li>menu2</li> 
    </ul> 
</div> 
) 
} 
} 

class Main extends React.Component { 
constructor(props){ 
super(props); 
this.state={ 
    isOpen: false 
} 
this.handleClick = this.handleClick.bind(this) 
} 

handleClick(){ 
this.setState({ isOpen : !this.state.isOpen}) 
console.log(!this.state.isOpen) 
} 
render(){ 
let mainStatus = this.state.isOpen ? "isopen" : ""; 
return(
<div className={this.props.mainStatus} id="main" > 
    <button onClick={this.handleClick}>Click</button> 
<div className="main">Main content</div> 
</div> 
) 
} 
} 
class App extends React.Component { 
render(){ 
return(
<div className="container"> 
    <Sidebar /> 
    <Main /> 
</div> 
) 
} 
} 

ReactDOM.render(<App />, document.getElementById("root")) 

CSS

.container { 
display: flex; 
} 

/**** MAIN ****/ 
#main { 
background-color: #900025; 
} 

#main.isopen { 
left:0; 
background-color:#fff; 
} 

/**** SIDEBAR ****/ 
.sidebar { 
background-color: #575777; 
} 

est ici my codepen link.

+0

Un peu de clarification - Vous voulez cacher et afficher la barre latérale sur le bouton cliquez. Est-ce correct? – Swapnil

+0

Oui, vous avez raison. J'ai mis en application le point de Maurice. Encore le bouton fonctionne maintenant mais je ne peux pas encore cacher la barre latérale .. https://codepen.io/aaayumi/pen/brPVvG?editors=0110 – aaayumi

Répondre

0

Cela ressemble à une simple erreur de copier-coller.

Change:

<div className={this.props.mainStatus} id="main" > 

à

<div className={mainStatus} id="main" > 

Dans le cas où il n'a commis aucune erreur de frappe: Vous déclarez la mainStatus variable comme variable normale dans votre fonction et ne donnant pas comme un accessoire à votre composant principal. Donc this.props.mainStatus sera indéfini. Tipp: Vous ne modifiez pas la variable mainStatus. Je recommande de le déclarer comme un const pour éviter les bugs inutiles, voir cela pour plus d'informations: https://softwareengineering.stackexchange.com/a/278653/282611

+0

Nous vous remercions de votre réponse détaillée. Il fonctionne maintenant. https://codepen.io/aaayumi/pen/brPVvG?editors=0110 – aaayumi