Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (5)

Лучшие ответы пользователя

Все ответы (5)
  • Как обновить компонент React.js?

    romanonthego
    @romanonthego
    в компоненте Data:
    componentDidMount() {
       this.refresher = setInterval(1000, () => this.forceUpdate())
    }
    
    componentWillUnmount() {
       clearInterval(this.refresher)
    }

    Это отвечая на вопрос. Но вообще - если _сам_ компонент не перерисовывает страницу - значит данные в props/state не изменились, а значит render вернет тот же результат. Правильно было бы подписаться на поток данных (через websocket или лонг-пуллинг - не важно) и рендерить изменения только когда что-то реально изменилось. Я так понял что перегрузка страницы в данном случае заменят рефреш данных - так не надо, надо лучше.
    Ответ написан
    Комментировать
  • 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 комментария
  • Как не загружать файл на сервер, если найден файл с таким же размером?

    romanonthego
    @romanonthego
    можно считать хэш на лету (хотя база быстрее чем доступ к файловой системе).
    в любом случае считать хэш а не сравнивать размер - идентичный размер не гарантирует, что содержимое тоже идентично.
    готовое решение сильно зависит от того что на сервере.
    Ответ написан
    Комментировать