React Inline Style: ReferenceError: окно не определено

У меня есть эта ошибка, когда я импортирую таблицу стилей SCSS в компонент React:

server.js:614 return /msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase()); ^

ReferenceError: окно не определено

Это мой Home.jsx

Почему???


person SaroVin    schedule 25.02.2016    source источник


Ответы (2)


Поскольку вы визуализируете свое представление на сервере, а на сервере (node.js) у нас нет объекта window

Измените свой код для рендеринга на стороне клиента, используйте событие componentDidMount и флаг

export default class AsyncMap extends Component {

  state = {
    inBrowser: false
  }

  componentDidMount() {
    this.setState({inBrowser: true});
  }

  yourCurrentRender() {...}

  render() {
    let res = null;
    if (this.state.inBrowser) {
      res = this.renderNewBehavior();
    } else {
      res = <span>Loading</span>;
    }
    return res;
  }
}
person Nour Sammour    schedule 25.02.2016
comment
Внимание, setState внутри componentDidMount может вызвать бесконечный цикл, потому что нет условия прерывания! подробнее - person Spidi; 28.02.2016

объект окна доступен только на стороне клиента

1.* Прежде всего убедитесь, что вы не выполняете рендеринг на стороне сервера, объект window доступен только в браузере.

2.* Во-вторых, если вы используете веб-пакет и запускаете свое приложение в режиме webpack-dev-server, ваши оконные объекты не обнаруживаются, поэтому вместо этого из

localhost: 8080/webpack-dev-server/

пытаться

localhost: 8080/
person Ignatius Andrew    schedule 29.04.2016