Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

React JS - Botao Show / Hidden (Toggle)

11/05/2018

Nessa vídeo aula vamos aprender a criar um botão de show / hidden igual a função toggle do JQuery.

Faremos a criação dos componentes conforme esquema abaixo:

Função Toggle no React

Requisitos para trabalhar com ReactJS

Para tanto, é necessário ter o conhecimento básico de Javascript e React e ter instalado o NodeJS e ter importado o react via npm.

npm install -g create-react-app
create-react-app my-app
cd my-app
npm start

Diretórios e arquivos

Nosso exemplo trabalhará com a seguinte árvore de diretórios e arquivos:

Função Toggle no React

Criando os Componentes

Componente: index.js - responsável por renderizar todo o nosso projeto.

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './components/App';

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

Componente: App - será o elemento base do nosso projeto. Abrigará os métodos e estados.

import React from 'react';
import AreaTexto from './AreaTexto';
import Botao from './Botao';

export default class App extends React.Component{
    constructor(){
        super();
        this.state={
            nomeBotao:'Esconder',
            classeDiv:'show'
        }
    }

    alterarEstado(){
        var Estado;
        var NomeBotao;
        if(this.state.classeDiv === 'show'){
            Estado="hide";
            NomeBotao='Mostrar';
        }else{
            Estado="show";
            NomeBotao='Esconder';
        }
        this.setState({
            nomeBotao: NomeBotao,
            classeDiv: Estado
        })
    }

    render(){
        return(
            <div>
                <AreaTexto classeSecundaria={this.state.classeDiv} texto="quaquer texto" />
                <Botao funcao={this.alterarEstado.bind(this)} valor={this.state.nomeBotao} />
            </div>
        );
    }

}

Componente: AreaTexto - receberá a div show / hidden.

import React from 'react';

export default class AreaTexto extends React.Component{

    render(){
        return(
            <div className={"AreaTexto " + this.props.classeSecundaria}>{this.props.texto}</div>
        );
    }
}

Componente: Botao - receberá o evento onClick que acionará o método alterarEstado e consequentemente fará o show/hidden.

import React from 'react';

export default class Botao extends React.Component{

    render(){
        return(
            <div className="DivBotao">
                <button onClick={this.props.funcao} className="Botao">{this.props.valor}</button>
            </div>
        );
    }
}

Estilizando os Componentes

Para estilizar nossos componentes utilizaremos o index.css na raíz do nosso projeto. Lembrando que o foco dessa aula não foi fazer um design responsivo ou estético, apenas demonstrar a função.

*{margin:0; box-sizing: border-box;}

.AreaTexto{float:left; width: 80%; margin: 30px 10%; background: gray; color: #fff; border-radius: 10px; padding: 15px; font-size: 18px; line-height: 35px;}

.DivBotao{float:left; width: 100%; text-align: center;}
.Botao{display:inline-block; border:0; padding: 10px 20px; background: black; color: red; border-radius: 15px; cursor:pointer; font-weight: bold; font-size: 17px;}
    .Botao:hover{opacity: 0.6;}

.show{display:block !important;}
.hide{display:none !important;}

No código acima, as classes show e hide serão classes secundárias responsáveis por exibir ou esconder nosso elemento AreaTexto.

Posteriormente teremos mais aulas de react :)

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Integrando REACT JS, PHP e MYSQL
Na aula de hoje vamos aprender a integrar o REACT JS com o PHP e com o banco de dados MYSQL. Utilizaremos a classe PDO para a integração.
Saiba mais!
React JS
Nessa seção aprenderemos sobre essa importante biblioteca Javascript desenvolvida pelo Facebook para facilitar a construção backend dos nossos websites.
Saiba mais!