Задать вопрос
  • Как правильно получить данные из объекта?

    rockon404
    @rockon404
    Frontend Developer
    const { data } = response.getuserworkersinfo;
    
    const targetUser = Object.values(data).find(({ user }) => user === 'ole.5');
    
    const { rate } = targetUser;


    Демо: https://jsfiddle.net/rockon404/s4gnjffz/
    Ответ написан
    Комментировать
  • Как правильно использовать react component?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Функция map превращает в колбеке элемент вашего массива данных в JSX код описывающий элемент и на выходе выдает массив таких элементов. Это лучший и общепринятый способ рендерить списки в react.
    Банальный пример:
    const employees =  ['Bill', 'Matt', 'Sarah'];
    
    return (
      <ul>
        {employees.map((employee, i) => (
          <li key={i}>employee</li>
        )}
      <ul>
    );

    Результат:
    <ul>
      <li>Bill</li>
      <li>Matt</li>
      <li>Sarah</li>
    </ul>


    2. "Element" как видите строка. Тут разработчики просто пушат в массив строку, но в идеале тут должна вызываться функция иницирующая запрос к серверу.
    Вот более приближенный к жизни пример:
    class Example extends Component {
      state = {
        elements: [],
        page: 1,
        limit: 20,
        total: 0,
        isLoading: false,
        isError: false,
      };
      
      componentDidMount() {
        this.loadThumbnails();
      }
     
      loadThumbnails = () => {
        const { page, limit } = this.state;
        
        this.setState({
          isLoading: true,
          isError: false,
        }, () => {
          axios.get(
            `api/somePath?limit=${limit}&page=${page + 1}`
          ).then(response => {
            const { data: { elements, total } } = response;
          
            this.setState(prevState => ({
              elements: [
                ...prevState.elements,
                ...elements
              ],
              page: page + 1,
              isLoading: false,
              total,
            }));
          }).catch(error => {
            this.setState({
              isLoading: false,
              isError: true,
            });
          });
        });
      };
      
      render() {
        const {
          elements,
          page,
          limit,
          total,
          isLoading,
        } = this.state;
    
        const hasMore = page * limit < total;
    
        return(
          <MasonryInfiniteScroller
            hasMore={hasMore}
            loadMore={this.loadThumbnails}
          >
            {elements.map(element => (
              <img
                key={element.id}
                src={element.thumbnail}
                style={{
                  width: element.width + 'px',
                  height: element.height + 'px',
                }}
              />
            )}
            {isLoading && <div>...Loading</div>}
            {isError && (
              <div>
                Can't load data. Please, check your internet connection.
                <button onClick={this.loadThumbnails}>
                  Try again
                </button>
              </div>
            )}
          </MasonryInfiniteScroller>
        ); 
      }
    }


    Тут как только вы пролистнете список
    Ответ написан
    1 комментарий
  • Пара вопросов по организации файловой структуры Реакта?

    gibson_dev
    @gibson_dev
    1 если должно быть доступно - тогда в /public
    2 css/scss храню возле самого компонента
    Ответ написан
    Комментировать
  • Пара вопросов по организации файловой структуры Реакта?

    RomReed
    @RomReed
    JavaScript, Flutter, ReactNative, Redux, Firebase
    1) картики храню в папке /public/img
    2) делаю так же
    Ответ написан
    Комментировать
  • В чем отличие объявления этих двух функций?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Как давно в JS можно не писать function в первом примере?

    Ключевое слово function можно опускать в определенных ситуациях:
    let bar = {
        test: 'A',
        foo() {
            console.log(this.test);
        }
    }
    
    bar.foo(); // A
    
    class Bar {
        constructor() {
            this.test = 'B';
        }
        foo() {
            console.log(this.test);
        }
    }
    
    (new Bar()).foo(); // B

    Разумеется для старых браузеров нужен Babel. В остальных случаях запись вида test(){} вызовет ошибку Uncaught SyntaxError: Unexpected token.
    Ответ написан
    Комментировать
  • Как работает этот AC с async/await?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Нет. В первом случае вы возвращаете из AC функцию c аргументом dispatch.
    Во втором случае вы не возвращаете ничего и убрали аргумент dispatch, заменив названием.
    А сама функция dispatch, которая передается в аргумент, как раз синхронная.

    Добавьте return и будет аналогично первому варианту:
    export const addComponent = data => {
      return async function(dispatch) {     //  тут добавлен return и аргумент
        let comps = await fire.database().ref("components");
        comps.push({
          name: data.component,
          comp: data.component_name
        });
    
         //так же в любое время вы можете вызвать dispatch
         dispatch({ type: 'someAction', payload: 'someValue' });
      };
    }

    Еще пример:
    const foo = x => y => x + y;
    аналогично:
    const foo = x => {
      return  y => {
        return x + y;
      }
    };

    Как это работает:
    const foo = x => y => x + y;
    
    const a = x(5);
    const b = a(6);
    
    console.log(b);
    // => 11

    Значение а можно представить так:
    y => 5 + y;

    Функция у вас асинхронная и пока не зарезолвится comps ее выполнение не продолжится, так как перед вызовом возвращающим значение comps стоит ключевое слово await.
    export const addComponent = data => async dispatch => {
      let comps = await fire.database().ref("components");
      // функция продолжит выполнение только когда вернется значение присвамваемое comps
      comps.push({
        name: data.component,
        comp: data.component_name
      });
    };


    Как я понимаю у вас возникли проблемы при работе с firebase?
    Могу порекомендовать использовать готовую библиотеку, вроде https://github.com/prescottprue/react-redux-firebase
    или разобраться с отличной библиотекой redux-saga и написать с помощью нее удобную реализацию взаимодействия с firebase.
    Ответ написан
    2 комментария
  • Как поочередно показывать элементы?

    HighQuality
    @HighQuality
    ☁ Ниндзя девелопер
    Сделать две формы. Слушать сабмит. По сабмиту первой формы — меняем state — скрываем первую форму и показываем вторую форму.

    Всё решается штатными средствами реакта.
    Ответ написан
    4 комментария
  • Как поочередно показывать элементы?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Можно, примерно, так:
    render() {
      const isUserInfoFormActive = ...; // your conditions
      const isUserAddressFormActive = ...; // your conditions
    
      return (
        <Wrapper>
          {isUserInfoFormActive && <UserInfoForm />}
          {isUserAddressFormActive && <UserAddressForm />}
        </Wrapper>
      );
    }


    Если шагов много, рациональней написать FormWidget:
    class FormWidget extends Component {
      ...
      getContent() {
         const { children, activeStep } = this.props;
    
         return React.Children.map(children, (child, i) => {
          if (activeStep === i + 1) {
            return React.cloneElement(child, { key: i });
          }
    
          return null;
        });
      }
    
      handleNext = () => {
        ...
      };
    
      handlePrev = () => {
         ...
      };
    
      render() {
        ...
        return(  
          <div>
            <Content>{this.getContent()}</Content>
            <div>
               <Button onClick={this.handlePrev}>{prevButtonLabel}</Button>
               <Button onClick={this.handleNext}>{nextButtonLabel}</Button>
            </div>
          </div>
        );
      }
    }

    и предавать детьми все шаги:
    render() {
      return (
         <FormWidget>
          <Step1 />
          <Step2 />
          <Step3 />
          <Step4 />
          <Step5 />
          <Step6 />
          <Step7 />
          <Step8 />
          <Step9 />
          <Step10 />
         </FormWidget>
      );
    }


    Пример очень абстрактный. Раскрывается сама идея.
    Всю реализацию писать, все-таки, долго.
    Ответ написан
    5 комментариев
  • Если купить внешний SSD для Macbook'a, будет ли он полноценно работать?

    DevMan
    @DevMan
    На счёт винды не в курсе, а поставить на внешний диск макось или использовать под хранилище - без проблем.
    Ответ написан
    Комментировать
  • Если купить внешний SSD для Macbook'a, будет ли он полноценно работать?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Года два-три назад приобрел вот такой - www.buffalotech.com/products/ministation-thunderbolt
    Пользую и в хвост и в гриву и через thunderbolt и через usb.
    OSX ставится, винду не пробовал.
    Приобретал в deepstore.ru
    Ответ написан
    5 комментариев
  • Почему выдаёт ошибку при добавлении нового элемента в Array?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    state в react нельзя менять напрямую, надо использовать асинхронный метод setState.
    createCheckboxes = () => {
      const data = this.props.pets[0] || {};
      const newAnimals = Object.values(data).map(el => el.animal);
     
      this.setState(({ animals }) => ({
        animals: [ ...animals, ...newAnimals ],
      }));
    };


    Ошибка из-за того, что вы используете к колбеке map не стрелочную функцию, а обычную и в ее контексте this в strict режиме ссылается на undefined. Со стрелочной функцией такой ошибки бы не было.

    PS. Я вам советовал писать в state состояния фильтра и фильтровать массив при рендере. А вы все делаете наоборот. Неправильно используете библиотеку и функции массива. Вам надо документацию по react хорошо изучить и основы js подтянуть. Особенно возможности ES6 и экспериментальных фич используемых в react разработке.

    Советую перед тем как будете отправлять работодателю свое тестовое задание, сбросить его сюда попинать.
    Ответ написан
    4 комментария
  • Пара вопросов о реализации фильтров в Реакте?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    По-хорошему у вас должен быть запрос на сервер с сортировкой, пагинацией, фильтрацией и лимитом.
    На каждый клик по сортировке, пагинатору или фильтру запрос. Например:
    GET '/api/v1/animals?page=1&limit=20sort=name&sortDirection=DESC&priceFrom=1000&priceTo=2000'

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

    А трюки с display: none, при возможностяx react вообще можно не использовать.

    Даже если пока не можете реализовать сервер с бд и REST API. Правильней будет хранить состояние фильтра в state компонента и выдавать на редер отфильтрованный по параметрам фильтра из state массив с животными. Изменился фильтр - произошел рендер. Вот и вся задача.
    Ответ написан
    1 комментарий
  • В чем преимущества *nix, linux перед windows (для веб разработчика)?

    DevMan
    @DevMan
    1. вы получаете окружение близкое или идентичное к продакшену.
    2. вы получаете внятную консоль/шел из коробки.
    3. вы избавляетесь от массы вопросов типа "на локалке все работает, а залил на сервер и получил жопу" (или наоборот).
    4. у вас появляется более лучшее понимание как на сервере все работает.

    при теперешнем развитие технологий и производительности железа, нет необходимости себя ломать.
    можно попробовать в виртуалке (docker/vagrant)/дуалбуте и самому для себя решить стоит или нет.
    Ответ написан
    17 комментариев
  • Почему постоянно "хочется отвлечься на что-то другое"?

    Обезьянка рулит ))
    https://youtu.be/0u3bccaRmmg
    Ответ написан
    Комментировать
  • Почему постоянно "хочется отвлечься на что-то другое"?

    fross
    @fross
    Разрабатываю
    Был у меня период когда я переехал и на протяжении полутора года, практически не общался с людьми в оффлайне(работал также дома), но мне было интересно что у кого происходит, потому часто заходил в соц.сети, что бы пообщаться со знакомыми/друзьями, посмотреть их фотографии, повспоминать былые времена. И когда я начинал что то учить/кодить, я постоянно отвлекался. Со временем, общение с друзьями угасало и я просто искал смешные картинки и видео в соц.сетях. Когда я просыпался утром, я брал телефон и начинал листать новостную ленту в соц.сети.

    Саморазвитие в тот период было таким:
    Я легко загорался и прочитав статью на хабре об arduino, я заказал себе ардуино, пока мне пришла посылка, мне это уже стало не интересным. Через две недели загорелся raspberry, еще через две математикой, потом физикой, потом просто худ.литература потом снова arduino и так каждые две недели. На stepik у меня огромное количество незаконченных курсов. В итоге я ничего не усваивал, информация в голове была не структурированной и в течение месяца я просто напросто забывал все.

    Через несколько месяцев я понял что я провожу в соц. сетях порядка 4-6 часов в день. Я отказался от ВК, и испытывал дискомфорт в первые две недели, потом стало легче, и я уже мог около недели провести за разбором какой либо задачи и мне это понравилось. Засыпая я думал о возможных решениях, просыпаясь я садился за работу. И все было прекрасно, но через некоторое время я опять сорвался, и вернулся не к соц.сетям, но к Counter-Strike 1.6, но вероятнее для того что бы просто поболтать с игроками, несколько раз в неделю смотрел фильмы. И все, изучение чего-либо и работа отошли на второй план и месяца на два я опять выпал из жизни. Каждый день, играя, я себя корил за то, что я ничего не делаю, от этого я злился сам на себя. От этой злобы, отсутствия реального общения впал в депрессию, обратился к врачу, мне выписали антидепрессанты. Буквально через месяц мне немного полегчало, я пересмотрел свой образ жизни и отказался от всех игр, фильмов, соц.сетей и стал учиться, читать, работать.

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

    Вывод:
    Отказавшись от всех соц.сетей, оставив только YouTube(за последние две недели это только официальные видео-уроки Unity и какие-нибудь плейлисты с музыкой), видясь с друзьями, в среднем 2-4 раза в месяц что бы попить кофе(обычно и это не занимает более 2-3 часов), у меня появилась способность на протяжении 6-10 часов в день работать над задачами отвлекаясь только на прием пищи, и пару перекуров. При этом сильно изменилось обучение и я на протяжении нескольких месяцев могу изучать одну дисциплину.

    В общем, избавляйтесь от информационного шума, ищите для себя только полезную литературу, и вы сами увидите как будет меняться ваше мышление.
    Ответ написан
    2 комментария
  • Почему постоянно "хочется отвлечься на что-то другое"?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Я конечно не психолог и может у тебя и правда какая-то редкая болезнь, которую надо лечить, но, ИМХО, это просто лень, нужно просто заставлять себя не отвлекаться.

    P.S.
    Как решить проблему с концентрацией?
    Как справиться с недостатком сосредоточенности?
    Ответ написан
    1 комментарий
  • Почему постоянно "хочется отвлечься на что-то другое"?

    vicodin
    @vicodin
    Имею некоторый опыт
    Используйте технику pomodoro с помощью любого таймера или https://www.forestapp.cc/
    Для начала это повысит умение концентрироваться в нужное время(только изначально не ставьте себе по 2 часа продуктивности, начинайте с получаса работы и нужного времени отдыха, со временем увеличивая первое и уменьшая второе(в разумных пределах)).

    Ограничьте социалочки - мне помогло отключение истории на ютубе => как следствие никаких рекомендаций и контент только по подпискам, замена вк на профильные сервисы (музыка на di.fm, общение в telegram, новости на медузе, постики в реддите).

    Может помочь ограничение социалочек в рабочее время через https://chrome.google.com/webstore/detail/stayfocu...

    Ну и как бы банально это не было - здоровое питание, устаканенный режим, достаточное количество сна и физических нагрузок очень бустят настроение и продуктивность. Можно заказать витаминки с айхёрб, например, https://ru.iherb.com/pr/Optimum-Nutrition-Opti-Men...

    Это общие советы, всё настолько индивидуально, что пока сам не перепробуешь и не найдёшь лучший вариант для себя - ничего не получится. Сам борюсь с собой уже 2.5 года, тренд положительный).

    P.S. Тату на руке перестанете замечать через 3-4 месяца.
    Ответ написан
    Комментировать
  • Почему постоянно "хочется отвлечься на что-то другое"?

    edinorog
    @edinorog
    Троллей не кормить!
    в свое время вас контролировали родители. прошло время ... и теперь вы в ответе что и как делать. а вы .... будем откровенны .... распустили сопли. ищите причины там где их нет. у вас синдром завышенных требований и хронической лени! первое .... это нежелание мириться с вашим уровнем восприятия и обработки информации. в думаете что можете быть Ломоносовым. не можете! иначе бы давно им стали. второе же объяснения не требует ). как со вторым бороться нас всех в детстве учили
    Ответ написан
    Комментировать
  • Почему постоянно "хочется отвлечься на что-то другое"?

    @asd111
    Потому что когда вы отвлекаетесь ваш мозг думает что вы делаете что то важное и у вас это так хорошо получается что мозг вырабатывает немного гормонов счастья.

    Это всё не так страшно до тех пор пока вы можете качественно выполнить свою работу. Если это мешает работе, то хорошо помогает не заходить в соц сети, в почту, в новостные сайты и т.п. до тех пор пока не закончили то что нужно сделать. Т.е. использовать интернет только как документацию к текущей задаче.

    Со временем вы привыкнете к тому что сначала работа а всё остальное в обед или после завершения нужной задачи.

    Если это не мешает работе то отвлекайтесь наздоровье, главное результат и сколько ушло на это время, а отвлекались вы или нет - не так важно.
    Ответ написан
    Комментировать