Ошибка в объявлении переменной внутри класса компонента и вне функции рендера, чтобы использовать ее внутри функции рендеринга в реакции - PullRequest
0 голосов
/ 04 марта 2019

в коде ниже, когда я объявляю переменные символы посредством деструктурирования

const { characters } = this.state;

Я получаю неожиданную ошибку токена.

import React, { Component } from "react";
import Table from "./Table";
class App extends Component {
  state = {
    characters: [
      {
        name: "Charlie",
        job: "Janitor"
      },
      {
        name: "Mac",
        job: "Bouncer"
      },
      {
        name: "Dee",
        job: "Aspring actress"
      },
      {
        name: "Dennis",
        job: "Bartender"
      }
    ]
  };
  removeCharacter = index => {
    const { characters } = this.state;

    this.setState({
      characters: characters.filter((character, i) => {
        return i !== index;
      })
    });
  };
   const { characters } = this.state;
  render() {
   
    return (
      <React.Fragment>
        <div className="App">
          <h1>Hello, React!</h1>
        </div>

        <div className="container">
          <Table
            characterData={characters}
            removeCharacter={this.removeCharacter}
          />
        </div>
      </React.Fragment>
    );
  }
}

export default App;

вот песочница с кодом: песочница с ошибкой, посмотрите файл app.js

и когда япоместите объявление внутри функции рендеринга, нет проблем, посмотрите на правильный код песочница.

Также, когда я создаю переменную, вне функции рендеринга (из файла App.js), без const или let, например:

x=1;

Он прекрасно работает, когда я использую его внутри функции рендеринга как this.x, но когда я объявляю это с помощью let, const или var, это вызывает неожиданноеошибка токена.

Как вы объясните это поведение?

1 Ответ

0 голосов
/ 04 марта 2019

У вас есть разрушенные символы вне метода рендеринга.

import React, { Component } from "react";
import Table from "./Table";
class App extends Component {
  state = {
    characters: [
      {
        name: "Charlie",
        job: "Janitor"
      },
      {
        name: "Mac",
        job: "Bouncer"
      },
      {
        name: "Dee",
        job: "Aspring actress"
      },
      {
        name: "Dennis",
        job: "Bartender"
      }
    ]
  };
  removeCharacter = index => {
    const { characters } = this.state;

    this.setState({
      characters: characters.filter((character, i) => {
        return i !== index;
      })
    });
  };
  render() {
    const { characters } = this.state;
    return (
      <React.Fragment>
        <div className="App">
          <h1>Hello, React!</h1>
        </div>

        <div className="container">
          <Table
            characterData={characters}
            removeCharacter={this.removeCharacter}
          />
        </div>
      </React.Fragment>
    );
  }
}

export default App;
...