• Create-react-app для приложения?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    ну тк а что тебе мешает изменить и отрихтовать его? Create-react-app это тот же конфиг. и он достаточно хорош. не хватает что то - изменяй и допиливай конфиг. и получишь то что нужно
    Ответ написан
    2 комментария
  • Как настроить slick слайдер?

    @justdealman
    Ответ написан
    Комментировать
  • В чём разница между constructor и просто state?

    miraage
    @miraage
    Старый прогер
    Второй вариант возможен только при наличии babel-plugin-transform-class-properties.

    Второй вариант мне удобнее, ибо не надо писать конструкторы.
    Так же, благодаря этому плагину можно писать функции с сохранением контекста, которые потом передавать дочерним компонентам. Такой способ очень хорош, ибо нам не надо передавать коллбэки в виде () => this.someCallback() - это сохранит эквивалентность props и React не будет лишний раз вызывать render. Например
    class MyComponent extends React.Component {
      onBtnClick = (event) => {
        // correct this
      };
    
      onBtnMouseUp() {
        // invalid this
      }
    
      render() {
        return <button onClick={this.onBtnClick} onMouseUp={this.onBtnMouseUp}>hello</button>;
      }
    }
    Ответ написан
    Комментировать
  • Как вывести контекст нажатого компонента React?

    Хочу дополнить ответ juicyigor т.к. он содержит одну критическую (для производительности) ошибку:

    <First 
      city={data.city} 
      handleClick={this.handleClick(data.city)} 
    />


    handleClick = city => () => {
      this.setState({
        selectedCity: city,
      });
    };


    Суть в том, что мы при каждом рендере создаем новый коллбэк и передаем его как prop компоненту First. Во-первых: даже без реакта у вас могут возникнуть проблемы со сборщиком мусора, если вы достаточно часто делаете ререндер. Во-вторых: хорошей практикой для компонентов-представлений (глупых компонентов - dump components) является использование так называемого pure render (путем наследования класса компонента от React.PureComponent). Это дает нам возможность ререндерить (обновлять) компонент только в том случае, если props или state изменились. У Вас в компоненте First state не используется, значит, рендер компонента будет зависеть только от props, но при этом - при каждом рендере родительского компонента вы передаете в First новый экземпляр handleClick. Значит - компонент First будет каждый раз рендерится, даже если по сути - данные не поменялись. Это плохо и является антипаттерном. Предлагаю вот такой вариант:

    class First extends React.PureComponent {
      handleClick = () => {
        const { onClick, city } = this.props
    
        return onClick(city)
      }
    
      render() {
        const { onClick, city } = this.props
    
        return (
          <div className="first">
            <button onClick={onClick && this.handleClick}>
              click
            </button>
            <p>{city}</p>
          </div>
        )
      }
    }


    В компонент First я добавил метод handleClick, который вызывает коллбэк onClick (который передан через props) и передает туда city. Таким образом мы избавились от пересоздания коллбэка в рендере родительского компонента. Также обратите внимание на определение этого метода:

    handleClick = () => {

    Такая запись подразумевает в себе автобиндинг: т.е. this у вас будет ссылаться именно на ваш элемент.

    И небольшое замечание по названиям: handleSomething - это функция, которую вы передаете в свойство с названием onSomething. Пример:
    <input onBlur={handleBlur} />

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

    class TestComponent extends React.PureComponent{
      constructor() {
        super();
        this.state = {
          selectedCity: false,
        };
      }
      
      handleClick = city => {
        this.setState({
          selectedCity: city,
        });
      };
      
      render() {
        return (
          <div>
            {locations.map((data, i) => 
              <First 
                city={data.city} 
                onClick={this.handleClick} 
              />
            )}
            <Second city={this.state.selectedCity} />
          </div>
        );
      }
    }


    PS саму логику я не трогал, просто хотел обратить Ваше внимание на ошибки.
    Ответ написан
    3 комментария
  • Что такое потоки в node.js?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Это такая штука, которая выдает (или принимает, или и то и другое) данные кусочками (chunk). Чтобы объяснить, зачем они нужны, нужно немного отвлечься и вспомнить, как работает nodejs.

    Преимущество nodejs состоит в том, что пока БД или ФС реагирует на команду, мы можем запустить другой коллбэк. За счет этого мы можем обработать много запросов какбэ параллельно, но с точки зрения программиста параллельности нет, потоков нету, race condition не возникает и башка у него об этом не болит. И у нас все быстро работает, пока ни одна функция не занимает процессор слишком надолго, пока она не работает слишком долго. А если она займет, то, в силу однопоточности, у нас все остальные запросы зависнут.

    Но иногда нам все-таки сделать большую работу — прочитать или записать большой файл, например. С помощью потоков мы дробим эту работу на кусочки, которые не занимают проц надолго. Это не всегда возможно, но в большом количестве случаев вполне себе работает.

    P.S. В данном ответе речь идет о stream (не путать с thread).
    Ответ написан
    5 комментариев
  • Где найти опытного программера, который бы мог сделать code review?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Где же оно обоюдовыгодное?

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

    А чтобы вам дать задачу, ее нужно описать, вам нужно выдать доступ, помочь это все настроить, мало того, что перепроверять что-либо за вами, так еще и объяснять зачем это нужно - в итоге на преподавательство и менторство уйдет больше времени, чем выгода от вашего "бесплатного" труда, вдобавок вы еще и воротите нос от всего, что не входит в список, а значит еще нужно потратить время, чтобы выискать задачу, которая не будет переплетаться с чем-то еще.

    Ну и напоследок - никаких обязательств на себя Вы не берете, а это значит, что если вам даешь задачу, то на самом деле ее нужно сделать самому, потому что кроме вас и ваших хотелок, есть сроки сдачи проекта и заказчик, которого не интересует, что вместо того, чтобы работать над проектом, кто-то тратит время на ваше обучение, еще и бесплатно.

    Ах да, договор о неразглашении вы не подписываете, отвечать ни за что не хотите, а получить доступ к коммерческому продукту изнутри хотите.

    Как вам такой взгляд на ваше предложение?
    Ответ написан
    4 комментария
  • С чего начать учить серверный javascript?

    @Nwton
    Ответ написан
    Комментировать
  • Как в React изменить состояние родительского компонента?

    fornit1917
    @fornit1917
    Например объявлять в родительском компоненте функцию, которая будет делать вам что надо, и прокидывать ее в дочерний через props. В дочернем просто вызывать ее.
    Ответ написан
    Комментировать
  • Nodejs/express + ES6 рекомендации?

    vicodin
    @vicodin
    Имею некоторый опыт
    Ответ написан
    Комментировать
  • Где заказывать качественные статьи?

    dom1n1k
    @dom1n1k
    Вопрос - а сколько вы платите за те статьи? "Вы" - это и конкретно вы, и рынок вообще. Я просто не в теме.

    Рассмотрю конкретный пример. Ну вот есть у меня публикация на Хабре с хорошей оценкой. Я затратил на её написание 3 вечера по ~4 часа каждый:
    1 - продумал общий скелет и подобрал ссылки
    2 - написал основной текст
    3 - вычитка и полировка
    То есть суммарно 1.5 рабочих дня если чистыми и наверное 2, если грязными (включая попить чай и потрындеть с кем-нибудь). Тут нужно отметить, что объем той статьи довольно небольшой, а идея пассивно зрела у меня уже некоторое время. Если бы я писал объемный/сложный материал или материал на новую тему, срок пришлось бы умножать в разы.

    Идем дальше. Положим месячную зарплату в 30 тыс - мне кажется, это минимальная планка для человека, который что-то знает и умеет (при условии, что он живет в провинции).
    Короче получается, что статья та должна стоить 2-2,5 тыс руб при самом мегаоптимистичном раскладе. Реалистично скорее всего больше даже с учетом того, что у профи уже набита рука, и пишет он быстрее меня.

    А какие сейчас цены по рынку?
    Ответ написан
    Комментировать
  • Уровень зарплат в Европе на удаленке такой же как и в офисе?

    @FoxInSox
    В Европе, и во всех остальных частях планеты, платят столько, сколько вы стоите.
    Ответ написан
    1 комментарий
  • React + Redux vs Angular 2?

    @davidnum95
    Это наверно уже миллиардный похожий вопрос. Если проект серьёзный - выбирайте то что знаете лучше всего. Плюсы почитайте в гугле.
    Мешать php и js не стоит, все общение происходит через rest api.
    Ответ написан
    Комментировать
  • Почему при сборки на webpack модуль не работает?

    @Sayto
    Просто Webpack не умеет подгружать es6 модули. Подключите babel-loader.
    module.exports = {
        entry: "./server.js",
        output: {
            path: __dirname,
            filename: "dist.js"
        },
        module : {
            loaders: [ { 
                    test   : /.js$/,
                    loader : 'babel-loader'
                }
            ]
        }
    };
    Ответ написан
    2 комментария
  • React+Redux VS Backbone (Marionette) в 2017?

    AppFA
    @AppFA
    Frontend developer at Yandex
    React это не фреймворк, а лишь либа для view
    1. Никто не запрещает использовать lodash\underscore для работы с данными. Для фильтрации\поиска используйте селекторы.
    2. Используйте webpack для сборки проекта, в настоящее время это единственное рабочее решение, так же в webpack есть асинхронная загрузка модулей - require.ensure, так что вы спокойно можете разбивать свое приложение на чанки и подгружать их в нужный момент.
    3. По-моему сейчас очень, очень много плагинов адаптированных под реакт, за не большую практику работы с этим стеком у меня ни разу не возникло необходимости писать что-то самому с 0, всегда можно найти какое-то решение, форкнуть и допилить под себя.

    По поводу backbone, честно не знаю - на мой взгляд React более лаконичен и на нем можно быстрее начать писать уже готовое приложение + при правильной архитектуре проекта поддержка в будущем будет без боли.
    Ответ написан
    Комментировать
  • Как тестировать web-приложение, UI которого на 90% состоит из Yandex-maps?

    В подобной ситуации я мокал все вызовы к yandex maps API для unit тестов. С e2e не должно быть серьезных проблем.
    Ответ написан
    3 комментария
  • Как учиться новому после рабочего дня?

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

    Через год начинайте ходить на собеседования. Вас пугают требования в описании вакансии? Когда я читаю требования на работе, где сейчас тружусь, то задаюсь вопросом "кто этот бред писал? и на хрена нам вот это все что там написано?". А все потому что пишут тексты HRы со слов "кого-то из отдела", сказанных несколько лет назад.
    В реальности по моим наблюдениям можем отказать довольно сильному разработчику потому что просто в данный момент вакансия не горит, а иногда, когда отдел завален работой, берем вполне себе средних, просто потому что срочно нужен. Аналогичная ситуация была и на предыдущей работе. Поэтому лично мое мнение - чтобы устроиться на работу надо обладать не только и не столько перечисленными в вакансии навыками, а скорее откликнуться в удачное время :) Ну и что-то знать конечно.

    И самое главное: два-три месяца работы в компании с более высоким уровнем разработки, чем у вас в данный момент, дадут вам больше, чем год бессонных ночей после работы. Поэтому не стоит пытаться сначала дорасти до определенного уровня, а потом устраиваться. Скорее всего не дорастете, только время потеряете. Изучайте базу и в бой!
    Ответ написан
    7 комментариев
  • Стоит ли использовать state, или все таки всегда хранить в redux store?

    mmmaaak
    @mmmaaak
    Много не кодил на редаксе, но видел в различных скринкастах, что стейт внутри компонентов используется чисто для управления UI внутри конкретного компонента, например флаги скрыть/показать для каких-либо блоков, или значения полей ввода, которые обновляются при событии change и испольуются в компоненте где-нибудь еще, не влияя на стейт приложения в store
    Ответ написан
    Комментировать
  • Почему появляется ошибка при сборке проекта?

    VladimirZhid
    @VladimirZhid
    Нравится делать что-то интересное и полезное.
    Ты используешь Spread-оператор(...) который не входит в es2015, а будет в 2016 или как-то так...
    тебе нужен пресет : stage-0
    Ответ написан
    Комментировать
  • Codewars, на сколько поможет подтянуть js?

    Jump
    @Jump
    Системный администратор со стажем.
    Скажите, реально ли по codewars прокачаться по js
    Реально.

    Скажите, реально ли по codewars прокачаться по js до уровня среднестатистического front end разработчика?
    Нереально, ибо к front end разработке он никаким боком не относится.

    JS это инструмент. Как молоток, или пила. И им нужно уметь пользоваться.
    Но хорошее умение пользоваться молотком и пилой не сделает вас умелым плотником. Ибо это только часть умения, необходимая, но не исчерпывающая.
    Ответ написан
    Комментировать