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

Failed to compile

Segui a aula inteira passo a passo. Cheguei até a substituir o código da aula escrita no meu mas, mas quando executo ele dá essa mensagem. ./src/App.js Module not found: Can't resolve './componentes/inputCustomizado.js' in 'C:\js\alberto\cdc-admin\src'

Como sei que vão pedir aqui está o meu app.js e o InputCustomizado.js


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

class App extends Component {

  constructor() {
    super();    
    this.state = {lista : [],nome:'',email:'',senha:''};
    this.enviaForm = this.enviaForm.bind(this);
    this.setNome = this.setNome.bind(this);
    this.setEmail = this.setEmail.bind(this);
    this.setSenha = this.setSenha.bind(this);
  }

  componentDidMount(){
    $.ajax({
      url:" https://cdc-react.herokuapp.com/api/autores",
        dataType: 'json',
        success:function(resposta){    
          this.setState({lista:resposta});
        }.bind(this)
      } 
    );          
  }



  enviaForm(evento){
    evento.preventDefault();

    $.ajax({
      url:'https://cdc-react.herokuapp.com/api/autores',
      contentType:'aplication/jason',
      dataType:'json',
      type:'post',
      data:JSON.stringify({nome:this.state.nome,email:this.state.email,senha:this.state.senha}),
      success: function(resposta){
        console.log('enviado com sucesso');
      },
      error: function(resposta){
          console.log('erro');
      }

    })
  }
  setNome(evento){
    this.setState({nome:evento.target.value})
  }
  setEmail(evento){
    this.setState({email:evento.target.value})
  }
  setSenha(evento){
    this.setState({senha:evento.target.value})
  }

  render() {

    return (
      <div id="layout">

          <a href="#menu" id="menuLink" className="menu-link">

              <span></span>
          </a>

          <div id="menu">
              <div className="pure-menu">
                  <a className="pure-menu-heading" href="#">Company</a>

                  <ul className="pure-menu-list">
                      <li className="pure-menu-item"><a href="#" className="pure-menu-link">Home</a></li>
                      <li className="pure-menu-item"><a href="#" className="pure-menu-link">Autor</a></li>
                      <li className="pure-menu-item"><a href="#" className="pure-menu-link">Livro</a></li>


                  </ul>
              </div>
          </div>

  <div id="main">
                  <div className="header">
                    <h1>Cadastro de Autores</h1>
                  </div>
                  <div className="content" id="content">
                    <div className="pure-form pure-form-aligned">
                      <form className="pure-form pure-form-aligned" onSubmit={this.enviaForm}method="post">
                        <InputCustomizado id="nome" type="text" name="nome" value={this.state.nome} onChange={this.setNome} label="Nome"/>
                        <InputCustomizado id="email" type="text" name="email" value={this.state.email} onChange={this.setEmail} label="Email"/>
                        <InputCustomizado id="senha" type="password" name="senha" value={this.state.senha} onChange={this.setSenha} label="Senha"/>
                        <div className="pure-control-group">
                          <label htmlFor="senha">Senha</label> 
                          <input id="senha" type="password" name="senha" value={this.state.senha} onChange={this.setSenha}/>                                      
                        </div>
                        <div className="pure-control-group">                                  
                          <label></label> 
                          <button type="submit" className="pure-button pure-button- SEGUE...
 INPUTCUSTOMIZADO.JS
import React, { Component } from 'react';

export default class inputCustomizado extends Conponent{

        reder(){
            return(
                <div className="pure-control-group">
                    <label htmlFor={this.props.id}>{this.props.label}</label> 
                    <input id={this.props.id} type={this.props.type}name={this.props.nome}value={this.state.value} onChange={this.props.onChange}  />                  
                </div>
            );
        }
}
5 respostas

Na sua classe InputCustomizado você escreveu "reder" ao invés de "render"

export default class inputCustomizado extends Conponent{

        reder(){ //Aqui está o erro
        return (    
            //Código do componente
        )
    }
}

Que pena. Fiquei tão feliz. Mas não é isso. Arrumei e o render e o erro virou para

./src/componentes/InputCustomizado.js
  Line 3:  'Conponent' is not defined  no-undef

Search for the keywords to learn more about each error.

O "extends" da classe InputCustomizado está errado, está como "Conponent" ao invés de "Component"

Deu um erro maior ainda

TypeError: this.state is null

Está apontando para linha 9 do inputCustomizado, e abaixo mostram outros erros no index.html. E eu nem mexi nesse arquivo.

Trocando um minuto o assunto Vc por um acaso faz consultoria de FrontEnd, dando suporte para quem está fazendo o curso online do Alura, ou sabe quem pode fazer esse trabalho? Claro que com um valor por hora. Porque sinto que mesmo com o curso aqui, seria interessante pra mim poder contar com alguém mais próximo, até para escolher o que exercitar e o que deixar de lado. Eu realmente sinto que preciso de um instrutor pessoal, para sanar esses pequenos problemas com mais agilidade. Meu número (whtasapp) é 11 996424111. Tenho procurado on line mas se pudesse adquirir via Alura eu acho que seria mais seguro.

solução!

O erro do seu inputCustomizado está nesta parte

<input id={this.props.id} type={this.props.type}name={this.props.nome}value={this.state.value} onChange={this.props.onChange}  />  

na parte onde tem o "value", você colocou "this.state.value". Esse inputCustomizado não tem state. Quem tem estado é a classe "App"

Lá na sua classe "App", você está usando o InputCustomizado desta forma:

<InputCustomizado id="nome" type="text" name="nome" value={this.state.nome} onChange={this.setNome} label="Nome"/>

Então esse componente recebe as seguintes props: "id", "type", "name", "value", "label" e "onChange" (esta seria uma função enviado do componente App.

Portanto, para corrigir a linha com erro, basta trocar value={this.state.value} por value={this.props.value}

Sobre o que você comentou, não conheço ninguém que faça este trabalho de dar aulas. Um colega certa vez me indicou uma plataforma onde existem professores que dão aula por webcam, o site seria este:

https://www.superprof.com.br

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software