Мне нужно изменить состояние компонентов одного уровня в моем приложении React.
Я использую состояние и settate
Мне нужно изменить состояние компонентов одного уровня. При загрузке страницы она должна существовать (отображается на странице) <BkUser />
, а при нажатии кнопки "id id =" ds-visual "она должна быть удалена (<BkUser />
не должна существовать) и должна существовать <BkDescanso />
.
Когда вы нажимаете <BkSleep />
(в родительском элементе div), вы должны удалить <BkDescanso />
и показать <BkUser />
Это сеть.
Никогда не должно быть <BkUser/>
и <BkSleep>
одновременно. <Bkuser />
- синий блок, <BkDescanso />
- красный блок
Это мой код:
Редактировать : Я редактирую свой исходный код, потому что я исправляю проблему. Это последний ОК код. В итоге самое главное было условное государство
{
this.state.usuario ? (<BkUser handleClick = {this.handleClick} usuario={this.state.usuario}/>): (<BkDescanso handleClick = {this.handleClick} usuario={this.state.usuario}/>)}
import React, { Component } from 'react';
class Header extends Component {
constructor(props) {
super(props);
this.state = {
usuario: true,
};
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState(state => ({
usuario: !state.usuario
}));
//alert("Works button");
}
render(){
return (
<header className="header">
<div className="configuracion">
{
this.state.usuario
? (
<BkUser handleClick = {this.handleClick} usuario={this.state.usuario}/>
)
: (
<BkDescanso handleClick = {this.handleClick} usuario={this.state.usuario}/>
)}
<div className="content-btn">
<button id="config" className='btn btn--rounded'><span className="ico-configuracion"></span></button>
<button id="salir" className='btn btn--rounded'><span className="ico-exit"></span></button>
</div>
</div>
</header>
);
}
}
class BkUser extends Component{
render(){
return ((
<div className='usuario'>
<img src="../img//usuario.svg" alt="Imagen usuario"/>
<div className="content-usuario">
<span id="nm-usuario" className="h4">Hermione Jane Granger</span>
<span id="tp-usuario" className="h5">Supervisor</span>
</div>
<div className="content-descansos">
<div className="botones">
<button id="ds-visual" className='btn btn--rounded' onClick={this.props.handleClick}><span className="ico-visual"></span></button>
<button id="ds-admin" className='btn btn--rounded'><span className="ico-tiempo-administrativo"></span></button>
<button id="ds-otros" className='btn btn--rounded'><span className="ico-descanso"></span></button>
</div>
<div className="ds-actual">
<span id="ds-tipo">Administrativo</span>
<span id="ds-tiempo">00:08:47</span>
</div>
</div>
</div>
));
}
}
class BkDescanso extends Component {
render(){
return ((
<div className='usuario descanso' onClick={this.props.handleClick}>
<h3>Finalizar descanso</h3>
</div>
));
}
}
export default Header;
В данный момент handleClick работает, но всегда существует BkUser и BkDescanso. Мне нужен только один, чтобы существовать. Если вы нажмете на id = "ds-visual", блок bkUser должен исчезнуть, и появится BkDescanso. Затем, если вы нажмете на div className = 'user rest' в BkUser, то должен быть только BkDescanso.
Я думаю, что он не может знать, когда это правда, а когда ложно, чтобы показать или скрыть
Большое спасибо за помощь.