1
resposta

Syntax error: Unexpected token

Ao usar o PubSub no 'AutorBox', é estourado esse erro de sintaxe. Help!

import React, { Component } from 'react';
import InputForm from './components/InputForm';
import Button from "./components/Button";
import $ from 'jquery';
import PubSub from 'pubsub-js';

class CadastroFormularioAutor extends Component {
    constructor(){
        super();
        this.state = {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);
    }


    enviaForm(event){
        event.preventDefault();
        $.ajax({
            url: "http://127.0.0.1:8080/api/autores",
            contentType: "application/json",
            dataType: "json",
            method: 'post',
            data: JSON.stringify({nome: this.state.nome , email: this.state.email, senha: this.state.senha}),
            success: function (listaAutores) {
                //publicando novos autores, para components que "subscribe" este tópico
                PubSub.publish('atualizacao-tabela-autores', listaAutores);
            },
            error: function (response) {
                console.log('erro');
            }
        })
    }


    setNome (event){
        this.setState({nome: event.target.value});
    }

    setEmail (event){
        this.setState({email: event.target.value});
    }

    setSenha (event){
        this.setState({senha: event.target.value});
    }

    render() {
        return (
            <section>
                <div className="row">
                    <div className="col-xs-12 col-sm-12 col-md-12">
                        <h2 className="text-center text-uppercase">Cadastro de Autores</h2>
                    </div>
                </div>
                <div className="row">
                    <div className="col-md-3"></div>
                    <form className="form col-md-6" method="POST" onSubmit={this.enviaForm}>
                        <InputForm
                            type="text" id="nome" className="form-control" name="nome"
                            value={this.state.nome} onChange={this.setNome} placeholder="Nome" label="Nome"
                        />
                        <InputForm
                            type="email" id="email" className="form-control" name="email"
                            value={this.state.email} onChange={this.setEmail}  placeholder="seu@email.com" label="E-mail"
                        />
                        <InputForm
                            type="password" id="senha" className="form-control" name="senha"
                            value={this.state.senha} onChange={this.setSenha} placeholder="Senha" label="Senha"
                        />
                        <Button type="submit" className="btn btn-success" value="Salvar"/>
                    </form>
                    <div className="col-md-3"></div>
                </div>
            </section>
        );
    }
}

export default class AutorBox extends Component {

    constructor(){
        super();
        this.state = {autores: []};
    }

    componentDidMount(){
        $.ajax({
            url: 'http://127.0.0.1:8080/api/autores',
            dataType: 'json',
            method: 'get',
            success: function (dados) {
                this.setState({autores:dados})
            }.bind(this)
        })
    }


    PubSub.subscribe('atualizacao-tabela-autores', function (topico, listaAutores) {
        this.setState({autores: listaAutores});
    });

    render(){
        return (
            <div>
                <CadastroFormularioAutor/>
                <TabelaAutores autores={this.state.autores}/>
            </div>
        );
    }
}
1 resposta

Oi Andre, tudo bem? Esse tipo de erro acontece geralmente quando um ponto e vírgula escapa no canto errado ou mesmo uma chave fechada erradamente. Infelizmente, você não colou a mensagem de erro completa, assim não dá pra rastrear o problema facilmente.

Tenta sempre colar o erro completo tá bem? Sempre vem a linha onde o problema está. Isso ajuda bastante.