Задать вопрос
  • React: как использовать браузерные компоненты на сервере?

    romanonthego
    @romanonthego
    разумеется он ругнется - карты очень сильно зависят от окружения и крайне редко изоморфные.
    правильно делать так:

    getInitialState() {
       return {readyToRenderMap: false}
    }
    
    // DOM become available after component is mounted
    // map can be displayed safely since componentDidMount does not get called in server environment
    componentDidMount() {
      this.setState({readyToRenderMap: true})
    }
    
    render() {
      return <div>
          <h1>Данные на карте:</h1>
          {this.state.readyToRenderMap &&
            <Map center={[55.754734, 37.583314]} zoom={10}>
              <Marker lat={@props.lat} lon={@props.lon} />
            </Map>
          }
         {!this.state.readyToRenderMap &&
            Loading... (or some spinner component. whatever.)
         }
          <p>Немного поясняющего текста</p>
          
        </div>
    }
    Ответ написан
    2 комментария