Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите найти SyntaxError (https://javascript.ru/forum/misc/70506-pomogite-najjti-syntaxerror.html)

ruslan_mart 14.11.2017 17:40

Цитата:

Сообщение от komplekt_17
import { render } from 'react-dom'

Это не нужно.


Метод render должен возвращать сам компонент.

stanilar 14.11.2017 21:11

Таки класс объявлен некорректно. Корректно - в классе должны быть только методы(то, как Вам посоветовал оформить код Nexus).
Так что показывайте ошибку, а то получается испорченный телефон.

Да, кстати, render не подразумевает то, что Вы вернете результат функции через промис( и уж тем более того, что результата вообще не будет). Результат надо возвращать сразу, причем именно в виде реактовского дерева.

Для реакции на изменившееся окружение нужны другие методы. Нужно работать через state реактовских компонент.Как то так(пишу по памяти):
class App extends Component{
  constructor(props) {
    //Конструктор класса, выполняется при создании объекта.
    super(props);
    this.state = {
      color: 1,
    };
   this.authrequest = this.authrequest.bind(this);
  }

  authrequest () {
  //Здесь запрос к серверу с ответом, по которому, будет изменен цвет компонента. Нужно использовать именно setState - иначе реакт не поймет что окружение изменилось
  ...
  ля - ля - ля а затем
  this.setState({color: 2,});
  }

  componentDidMount(){
  // Метод жизненного цикла компонента, будет вызван после того, как объект создан и задеплоен в виртуальное дерево. Стоит обратить внимание, что метод render будет вызван до вызова этого метода.
  this.authrequest();
  }


  render(){
  // Вызывается каждый раз, когда изменяется внутренне состояние компонента.
  const {color} = this.state;
  let cmp = null; // тот компонент, который отрисуется в зависимости от переменной color
  if (color===1){
    cmp = (<div>1<div>);
  } else {
    cmp = (<div>2<div>);
  }

  return (<div>
                {cmp }
             <div>);
  }

}


Часовой пояс GMT +3, время: 22:17.