Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Não consigo digitar nada nos campos, e uma série de problemas

Estou tentando rodar meu projeto, inicialmente já não conseguia abrir pela url do jar que a gente instalou, então coloquei http://cdc-react.herokuapp.com/api/autores e veio todos os dados, mas não estou conseguindo cadastrar e nem digitar nos inputs, ele fica travado.. e quando tento enviar nao exibe nem meu console.log diz que o server nao esta estartado, e pior, ja reolehit oda aula pra ver o que fiz de errado, e não veio nenhuma luz, estou vendo que algumas pessoas no forum tiveram problemas semelhantes e não obtiveram resposta. Preciso de uma luz!!! Afinal contratei o alura pra aprender React, todos os outros cursos que fiz, foram bem mais explicativos que este, está um pouco mais confuso na parte de configurações.

Meu App.js

import React, { Component } from 'react';
import './css/pure-min.css';
import './css/side-menu.css';
import $ from 'jquery'

class App extends Component {
    constructor(){
        super();
        this.state = {lista:[]};
    }

    componentDidMount(){
        $.ajax({
            url:"http://cdc-react.herokuapp.com/api/autores",
            dataType:'json',
            success:function(resposta){
                this.setState ({lista:resposta});
            }.bind(this)
        });
    }
    enviaForm(evento){
        evento.preventDefault();
        console.log('dados sendo enviados');
        $.ajax({
            url:"http://cdc-react.herokuapp.com/api/autores",
            contentType:'application/json',
            dataType:'json',
            type:'post',
            data: JSON.stringfy({nome:'',email:'',senha:''}),
            success: function(resposta){
                console.log("Enviado com sucesso");
            },
            error: function(resposta){
              console.log("erro");  
            }
        });


    }
    render() {
    return (

<div id="layout">
    { /*Menu toggle*/ }
    <a href="#menu" id="menuLink" className="menu-link">
    { /*Hamburguer icon*/ }
        <span></span>
    </a>

    <div id="menu">
        <div className="pure-menu">
            <button className="pure-menu-heading">Taynara estudo</button>

            <ul className="pure-menu-list">
                <li className="pure-menu-item"><button className="pure-menu-link">Home</button></li>
                <li className="pure-menu-item"><button className="pure-menu-link">Autor</button></li>
                <li className="pure-menu-item"><button className="pure-menu-link">Livro</button></li>
            </ul>
        </div>
    </div>

    <div id="main">
        <div className="header">
            <h1>Cadastro de autores</h1>
            <div className="content" id="content">
              <div className="pure-form pure-form-aligned">
                <form className="pure-form pure-form-aligned">
                  <div className="pure-control-group">
                    <label htmlFor="nome">Nome</label> 
                    <input id="nome" type="text" name="nome" value=""/>                  
                  </div>
                  <div className="pure-control-group">
                    <label htmlFor="email">Email</label> 
                    <input id="email" type="email" name="email" value=""  />                  
                  </div>
                  <div className="pure-control-group">
                    <label htmlFor="senha">Senha</label> 
                    <input id="senha" type="password" name="senha" />                                      
                  </div>
                  <div className="pure-control-group">                                  
                    <label></label> 
                    <button type="submit" className="pure-button pure-button-primary">Gravar</button>                                    
                  </div>
                </form>             

              </div>  
              <div>            
                <table className="pure-table">
                  <thead>
                    <tr>
                      <th>Nome</th>
                      <th>email</th>
                    </tr>
                  </thead>
                  <tbody>
                   {
                       this.state.lista.map(function(autor){
                           return (
                               <tr key={autor.id}>
                                   <td>{autor.nome}</td>
                                   <td>{autor.email}</td>
                               </tr>
                           )
                       })
                   }
                  </tbody>
                </table> 
              </div>             
            </div>
          </div>  

        </div>

        <div className="content">

        </div>
    </div>


    );
  }
}

export default App;
4 respostas

No meu console tem aparecido alguns problemas como: [Violation] 'load' handler

192.168.0.27/:1 [DOM] Input elements should have autocomplete attributes (suggested: autocomplete='name', confirm at https://goo.gl/6KgkJg)

Não acredito que seja problema de auto complete porque já ajustei isso também e não funcionou, então voltei para versão anterior

Fala Taynara tudo bom?

Talvez tenha ocorrido alguma instabilidade desculpe por isso, mas a API pelo que testei aqui está exibindo os itens agora: http://cdc-react.herokuapp.com/api/autores

Com relação a cadastro itens por meio do enviaForm, você está enviando um json vazio: data: JSON.stringfy({nome:'',email:'',senha:''}),.

Um outro ponto, é que seu formulário não possui o código do onSubmit para fazer o envio do form, que é feito logo no começo desse video: https://cursos.alura.com.br/course/react/task/20551

O capítulo está dividido em vários videos que cobrem toda essa parte para fazer os campos serem digitáveis, para que no final seja possível cadastrar as informações.

Inclusive no próximo video, é ensinado como pegar as informações: 02) Manutenção do estado form e mais eventos https://cursos.alura.com.br/course/react/task/20552

Espero ter ajudado :)

Infelizmente não me ajudou em muita coisa , mas acho que estou me expressando mal na explicação. Sobre o herokuapp expliquei justamente que eu só conseguia usar ele e não por toda explicação que teve de como usar o jar que foi falado nas videos aulas, que inclusive soube somente pelos fóruns que ele mudou de nome, demorei um tempo para descobrir que mudou o final para SNAPSHOT. Eu não consegui na minha máquina acessar http://localhost:8080/api/autores , mesmo seguindo todos os passos desse video que explicava sobre isso, mas para não perder o tempo de estudo avancei e usei o herokuapp .

Sobre os campos não digitáveis, eu fiz exatamente até onde está o video, eu coloquei acima meu código com o submit conforme foi explicado nesse vídeo , não consegui ter o mesmo resultado que o final do vídeo.

Outra coisa que senti falta, foi de um servidor rodando a parte, em alguns dos erros do meu console, é falta dessa conexão, e não consegui achar nenhum video que teria um npm run server.

Não quero avançar sem estar funcionando esses detalhes porque não será um aprendizado completo.

solução!

Agradeço por ter tentado me ajudar ;)