• Nextjs выдает React.Children.only expected, но непонятно почему?

    @WizardW Автор вопроса
    Link от Next.js принимает только один параметр, поэтому пришлось всё содержимое в Link обернуть в React.Fragment.
    Ответ написан
    Комментировать
  • Как перейти по ссылке внутри обработчика событий в react?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    import React, { Component } from 'react';
    import { withRouter } from 'react-router-dom';
    
    class Example extends Component {
      handler = () => {
        this.props.history.push('/cources');
      };
      
      render() { /* ... */ }
    }
    
    export default withRouter(Example);


    Возможно, вам подойдет простой вариант с компонентом Link:
    import React, { Component } from 'react';
    import { Link } from 'react-router-dom';
    
    class Example extends Component {
      render() {
        return <Link to="/cources" />;
      }
    }
    
    export default Example;
    Ответ написан
    Комментировать
  • Стоит ли переходить на React.PureComponent по-умолчанию?

    PQR
    @PQR
    React.PureComponent реализует метод shouldComponentUpdate таким образом, что он делает поверхностное сравнение props и state (не глубокое). Вот собственно код:
    https://github.com/facebook/react/blob/c8fbdac2271...
    shouldUpdate =
                !shallowEqual(prevProps, nextProps) ||
                !shallowEqual(inst.state, nextState);


    Что такое shallowEqual? Это по сути сравнение оператором === каждого элемента из prevProps с каждым элементом из nextProps. На всякий случай дам ссылку на реализацию для полного понимания: https://github.com/facebook/react/blob/6963ea4bfcd...

    В итоге всё зависит от структуры ваших props. Если в props вы передаёте объекты которые иногда мутируются, т.е. по ссылке они равны ===, но внутри какие-то данные поменялись (что само по себе выглядит странно в экосистеме redux + reselect, но вполне возможно технически), тогда использование PureComponent вам всё поломает, т.к. на экране какие-то компоненты перестанут перересовываться!

    Если же у вас всё по уму, данные которые передаются через props являются скалярными типами (string, int, float, bool) или immutable объектами, тогда смело используйте PureComponent - в некоторых случаях он поможет избавиться от лишних вызовов render.

    Важное замечание: PureComponent нужно использовать только для так называемых presentational components, т.е. для тех компонент, которые НЕ обёрнуты в вызов redux connect().

    Для container components (т.е. тех компонент, которые обёрнуты в redux connect()) нет смысла наследоваться от PureComponent, т.к. метод connect() оборачивает ваш компонент своей реализацией shouldComponentUpdate, которая также использует shallowEqual. Если вы по недосмотру унаследуете container component от PureComponent - ошибок не будет, но это не имеет никакого смыла, т.к. ваш код по сути будет дважды делать shallowEqual, а зачем делать лишнюю работу?

    Подводя итог, рецепт такой:
    - presentational components наследуем от React.PureComponent
    - container components (которые обёрнуты в redux connect()) наследуем от старого доброго React.Component
    Ответ написан
    1 комментарий
  • Как можно перебрать объект в jsx?

    miraage
    @miraage
    Старый прогер
    {Object.keys(cities).map(cityId => (
      <div key={cityId} className="card-panel">
        {cities[cityId]}
      </div>
    ))}
    Ответ написан
    Комментировать
  • Как обойтись без composera?

    @JustGAST
    PHP-Developer
    Вот именно то, что вы ищете:
    composer.borreli.com
    Ответ написан
    2 комментария
  • Поясните для чего super(props), а также .bind(this)?

    AndrewN1
    @AndrewN1
    • super(props) - вызвать конструктор наследуемого класса, те React.Component
    • .bind(this) - возвращает функцию с жесткой привязкой контекста
    Ответ написан
    Комментировать
  • Почему не запускается виртуальная машина на VirtualBox 5.2?

    dklight
    @dklight Автор вопроса
    php кодер - level 2.5
    Проблемы решены:
    первая из них решилась из подсказки самого окна
    sc.exe query vboxdrv
    в моем случае сервис был выключен. Далее сервис/службы -> включение. Перебираем типы запуска и пытаемся запустить.

    вторая из них решилась выполнением первой из рекомендации с официального форума https://forums.virtualbox.org/
    а именно:
    sfc /scannow
    1. Выполняем ждем -> нашлись ошибки -> перезагрузка.
    2. Повтор шага 1.
    3. Профит

    Выполнив второй раз виртуал бокс был в списке удаления. Но вдруг потыкав на кнопке включения, неожиданно все заработало...
    Ответ написан
    1 комментарий
  • Как передать props в React-router?

    eternalSt
    @eternalSt
    Доброго времени суток!

    У компонента Route есть параметр render.

    <Route
      render = { props => logged ? <Product /> : <Redirect to='/' /> }
      exact
      path='/products/:id'
    />


    И важно, в доках об этом конечно сказанно, но я повторюсь.
    component имеет приоритет над render, так что использовать их вместе не стоит.
    Ответ написан
    Комментировать
  • Как сделать чтобы Webpack не минифицировал html файл после его компиляции из jade?

    Возможно для тебя уже поздно, но может помогу тем кто будет гуглить.
    { test: /\.jade$/, loader: 'jade?pretty=true' }
    Ответ написан
    4 комментария
  • Насколько сложно сделать аудио систему, которая будет выбирать сколько аудио каналов она будет принимать?

    veydlin
    @veydlin
    Мне никогда не жалко средств на свое любопытство
    На сколько я помню, блютус не очень любит столько подключений

    Могу предложить другой вариант, взять независимый передатчик который будет вещать просто в воздух без всяких подключений, как радио, а кто хочет - тот принимает

    В качестве кодека берите VS1003
    В качестве приемника и передатчика сойдет NRF24L01

    На передатчик антенну по лучше, на приемниках можете развести с керамической SMD, зависит от расстояний и местности, но должно хватить, в крайнем случае на передатчик можно влепить усилитель

    На счет каналов, тут надо ставить на 2 колонки один NRF24L01, в формате MP3 записано где R и L, а VS1003 сам умеет выдавать звук куда надо
    Ответ написан
    1 комментарий
  • Как реализовать скролл двух блоков на странице?

    @KononovD
    если я правильно понял, то:
    надо брать высоту правого блока(scrollHeight) и когда позиция окна(pageYOffset) будет = scrollHeight - window.clientHeight - левому блоку даем обычное позиционирование и они оба скроллятся вниз
    Ответ написан
    Комментировать
  • Как правильно организовать деплой приложения?

    shebanoff
    @shebanoff
    Я увидел в Вашем вопросе две части.

    Как правильно организовать деплой (выкладку работоспособного кода на сервер)?


    В самом простом случае Вам подойдет связка ssh + git pull на сервере. В этом случае на сервер будут доставлены патчи коммитов, которые есть в репозитории, но еще не появились на сервере, т.е. «только обновления файлов, которые сейчас существуют». Этот метод довольно подробно обсудили в ответах на другой вопрос.

    Если хочется автоматизировать процесс, что похвально, то я вижу три доступных инструмента для этого: Capistrano, Mina (мой персональный фаворит) и Vlad the Deployer. Все три проекта схожи по сути. Принцип их работы таков:
    1. Подключиться к целевому серверу.
    2. Залить обновление кода из репозитория.
    3. Выполнить предписанные Вами инструкции (перезапуск демонов, сброс индексов, обновление структуры БД и прочее).
    4. ...
    5. PROFIT!


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

    Как организовать процесс тестирования?


    Если Вы еще не определились с методикой тестирования (Test Driven Development, Behavior Driven Development, Лень-Driven Development), то Вам следует для начала заняться именно этим.

    Скорее всего, тесты будут выполняться на Вашей локальной машине, пока Вы пишете код. Используя RSpec, я держу открытым Guard. Guard отслеживает изменения в коде и запускает набор юнит-тестов, которые покрывают измененный код. Весь процесс занимает не больше минуты-двух, и особо не напрягает. Как только я вижу провалившийся тест, я меняю код до тех пор, пока он не станет зеленым. Пока тестов мало (это не самый лучший знак, к слову), Вы работаете один, локального запуска перед деплоем может оказаться достаточно — например, чтобы проверить релиз на доступность критического функционала: регистрации, покупки, создание постов и т.п.

    В какой-то момент речь может зайти о Continious Integration. Это возможность иметь стабильный билд в любой отрезок времени, а так же принимать решение о годности каждого отдельного коммита. Сопряжено с деплоем кода на integration-сервер и запуском на нем тестов. Скорее всего, это Вас не интересует, если Вы не работаете в команде. Но, для полноты картины, Вы можете понаблюдать за билдами на Travis CI известных Open Source проектов: Symfony 2 и Ruby on Rails.

    Таким образом


    Вы не указали, какие конкретно инструменты для разработки Вы используете. Если же с деплоем все гораздо проще, то при выборе инструментов для тестирования я рекомендую Вам ориентироваться на те, которые нативны для Вашего основного фреймворка и языка (PHP, если правильно понимаю) и привычны их пользователям. Это позволит быстро применить устоявшиеся практики к Вашему проекту и понять всё на деле.

    Приведите в порядок Ваш репозиторий с кодом, используйте mina для деплоя и запускайте тесты на Вашей локальной рабочей машине. Как только Вы почувствуете, что этого не достаточно — Вы наверняка уже будете знать, куда шагать дальше.
    Ответ написан
    8 комментариев
  • Как разместить лого по центру блока?

    space2pacman
    @space2pacman Куратор тега CSS
    Просто царь.
    Ответ написан
    Комментировать
  • Говорить ли на собеседовании, что ты проходил курсы, которые были платные, но ты их скачал с торента и прошёл всё бесплатно?

    SkiperX
    @SkiperX Куратор тега CSS
    Лучше положить в портфолио работу, где применил эти знания.
    Ответ написан
    Комментировать
  • Как научиться верстать без проблем?

    za4me
    @za4me
    Человек
    Совет один. Больше практики.
    Ответ написан
    Комментировать
  • Каких знаний php для верстальщика будет достаточно?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Надо знать вот эти штуки: if, foreach, echo, <?=$var ?> - это всё. Остальное нюансы конкретного проекта вам разъяснит программист максимум за пол часа.
    Ответ написан
    Комментировать
  • Каких знаний php для верстальщика будет достаточно?

    @Silm
    Верстальщики изучают PHP на уровне шаблонизатора.
    • Надо уметь выводить в шаблонах переменные.
    • Писать логические условия (если пользователь не авторизован, то показываем форму входа, если нет, то ссылку на личный кабинет).
    • Писать циклы (в шаблон передается переменная с массивом постов, верстальщик должен написать цикл для их отображения).
    • Надо знать базовое API языка, встроенные функции для работы с числами, массивами, строками, датами и тп.
    • Нужны знания синтаксиса объектов. Понимать не обязательно, главное знать как вывести содержимое.


    Скачиваете какой нибудь базовый курс по PHP, дня за 2-3 пройдете. Обязательно почитайте документацию на php.net
    Ответ написан
    1 комментарий
  • Какие самые явные косяки вы видите в приведённом макете?

    Nekto_Habr
    @Nekto_Habr
    Чат дизайнеров: https://t.me/figma_life
    С технической точки зрения, визитка действительно ад. Телефоны написаны по-разному, вёрстка сосёт, кегли скачут, шрифты банальны. Человек со вкусом сразу унюхает кривизну визитки. Картинка ок, только чтобы эффективно отрабатывать картинку на фоне - нужно эффективно отработать текст на ней, а этого нет.
    Ответ написан
    2 комментария