• Как не загружать файл на сервер, если найден файл с таким же размером?

    romanonthego
    @romanonthego
    можно считать хэш на лету (хотя база быстрее чем доступ к файловой системе).
    в любом случае считать хэш а не сравнивать размер - идентичный размер не гарантирует, что содержимое тоже идентично.
    готовое решение сильно зависит от того что на сервере.
    Ответ написан
    Комментировать
  • 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 комментария
  • Как обновить компонент React.js?

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

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

    romanonthego
    @romanonthego
    jquery не нужен для подобных вещей
    var checked = form.querySelectorAll('input[type="checkbox"]:checked');
    // node array is not array :(
    Array.prototype.map.call(checked, (node) => {
      //...do something with node.value, like 
      sum += parseInt(node.value);
    });
    Ответ написан
    Комментировать
  • Webpack url loader как всегда обрабатывать картинки?

    romanonthego
    @romanonthego
    всегда - никак, в этом и смысл: если картинка не используется в коде (нет ни одного вызова require('path/to/image') )то в bundle она не попадет. Добавление запроса на картинку соответсвенно поместит ее в bundle. Simple as that.
    Зачем там картинка которая в актуальном коде не нужна ни разу - отдельный вопрос конечно :)
    Ответ написан