Как заставить react hot loader работать для jsx?

#javascript #reactjs #react-native

#javascript #reactjs #react-native

Вопрос:

Я только начал с reactjs и пытаюсь запустить горячую перезагрузку для моего jsx. Я разветвил это приложение: https://github.com/gaearon/react-hot-boilerplate/tree/next .

Я изменил app.js слегка , чтобы:

 import React, { Component } from 'react';

export default class App extends Component {
  constructor(){
      super();
      this.state = {
        txt: 'this is the  txt',
        cat: 0
      }
    }

  render() {
    return (<div>
          {this.state.txt}
        <h1>sdfdsfdsfs, world.</h1>
        </div>

    );
  }
}
  

Когда я меняю текст в теге h1, он обновляет браузер. Однако, когда я меняю свойство txt, ничего не происходит. Как я могу заставить это работать?

Комментарии:

1. Вы имеете в виду, что при изменении состояния txt this.state = { ... } в конструкторе ничего не происходит?

Ответ №1:

React-hot-loader не может перезагрузить изменения в исходное состояние в конструкторе. Это потому, что конструктор для компонента не вызывается react-hot-loader повторно, когда что-то внутри компонента изменяется.

Он не может перезагрузить изменения в исходное состояние. Не забывайте, что назначение этого свойства эквивалентно установке поля внутри конструктора. Даже если вы измените конструктор, поле уже установлено. Конструктор не запускается дважды. Так что это не поддерживается.

Проверьте эту проблему: https://github.com/gaearon/react-transform-hmr/issues/41