• Как добавить поле в Record в immutable.js?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    case ADD_PRODUCT_TO_CART_SUCCESS: {
      return state.setIn(["entities", payload.productUid], {...payload.product, count:  ВАШЕ_КОЛИЧЕСТВО});
    }

    В этом коде мы берем все что было в payload.product и по 1 полю добавляем в новый объект ( фигурные скобочки = новый объект), а так же добавляем поле count. Количество (count) вы так же, наверняка, будете передавать в экшене. Получится: count: payload.count (или как вы назовете поле в вашем экшене...)

    Пример:
    { type: ADD_PRODUCT_TO_CART_SUCCESS,
        payload: { productUid, product, count: ваше_количество } // сюда count можно передавать из функции с помощью которой ваш экшен был создан...
      }
    Ответ написан
    2 комментария
  • Как добавить пользователей в firebase?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Как теперь сделать так чтобы в состоянии например в модуле users/people хранить всех пользователей которые зарегистрировались

    Посмотреть как в firebase получить всех пользователей и в нужный момент, выполнять запрос за ними.
    Или тут больше вопрос о том чтобы найти в firebase API нужный метод?
    Ответ написан
    4 комментария
  • Как добавить пользователей в firebase?

    RomReed
    @RomReed
    JavaScript, Flutter, ReactNative, Redux, Firebase
    Работал с firebase и помню что делал так
    const authenticateWithEmailAndPassword = (email, password) => {
        // console.log('authenticateWithEmailAndPassword',email, password)
        return dispatch => {
            dispatch({type: types.START_LOGIN});
            firebaseAuth.signInWithEmailAndPassword(email, password)
                .then(result => {
                   //Здесь вы ложите email и пасс  пользователя  в users/people/id данного пользователя 
                    dispatch(signInEmailPasswordSuccess(result))
                })
                .catch(error => {
                    dispatch(signInError(error))
                });
        }
    }

    И в необходимый момент вы сможете взять всех пользователей из users/people/
    Ответ написан
  • Как сделать ссылку на страницу с компонентом в react-router?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Какой у вас роутер? Если четвертый, то должно быть так:
    class App extends React.Component {
      render() {
        return (
          <div>
           <Switch>
              <Route exact path='/' component={Home} />
              <Route path='/signup' component={Registration} />
              <Route component={NoMatch} /> {/* для всех остальных адресов */}
            </Switch>
          </div>
        );
      }
    }


    Чтобы на эту страницу попасть, нужно использовать вместо <a> компонент из RR - <Link to='registration'>Регистрация</Link>

    То есть вы внутри switch выбираете, что показывать! Значит вам еще нужно сделать компонент Home в котором уже разместить кнопку на регистрацию:
    <Link to="/signup" className="btn btn-warning">Регистрация</Link>
    Ответ написан
    Комментировать
  • Как проверить что компонент отрендерился уже один раз и в последующие разы рендерить его по другому?

    0xD34F
    @0xD34F Куратор тега React
    "Рендерить его по другому" - подход неверный.

    Надо разделять предустановленные значения, и те, что вводит пользователь. Так что просто числа хранить уже не получится - наверное, стоит сделать объект, который содержит в себе значение ячейки и её disabled. Как-то так.
    Ответ написан
    Комментировать
  • Как сделать проверку на совпадение содержимого ячеек судоку?

    0xD34F
    @0xD34F Куратор тега React
    Пытался нагуглить, но самостоятельно разобраться в простыне кода не могу.

    Что-то вы странное нагуглили - на всё про всё строчек десять, никакой "простыни".

    Вычисляете координаты начала текущего блока, затем обходите его (два цикла, один вложен в другой, от начальных координат до начальных + 3). Типа так.
    Ответ написан
    5 комментариев
  • Как обстоит работа с сервером в реакт приложении?

    gadfi
    @gadfi
    https://gamega.org
    серверный рендер нужен для сео, если вам это не нужно то не парьтесь
    Как происходит авторизация в SPA?

    как обычно получили токен и подписываем им запросы (есть разные вариации но суть таже)
    и еще вопрос. знаюесть такая сущность как firebase, можно ли ее использовать для небольшого проекта вместо "обычной" бд?

    можно, нужно ди другой вопрос на который ответить можно только исходя из конкреного проекта
    Ответ написан
    Комментировать
  • Как обнаружить в чем ошибка загрузки данных с сервера (React/Redux/thunk)?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Итак, у вас отсутствуют условия инициации загрузки комментариев в CommentsList:
    componentWillReceiveProps({ isOpen, article, loadArticleComments }) {
          loadArticleComments(article.id)
      }

    каждый раз когда компонент получает новые свойства он вызывает componentWillReceiveProps. С правильно настроенными параметрами в redux он это делать будет вечно. Исправить можно так:
    componentWillReceiveProps({ isOpen, article, loadArticleComments }) {
          if (
               !article.commentsLoaded &&
               !article.commentsLoading &&
               !this.props.isOpen &&
               isOpen
             ) {
                loadArticleComments(article.id)
          }
      }

    Расшифровывается так: если комментарии не загруженны и еще не загружаются и если список был закрыт и открылся, то можно загрузить комментарии. Как только они будут загруженны, проверка условий будет вылетать на первом шаге.

    В редюсере не помню что было но надо так:
    case "LOAD_ARTICLE_COMMENTS_SUCCESS": {
          return articleState
            .setIn(["entities", action.payload.articleId, "commentsLoading"], false)
            .setIn(["entities", action.payload.articleId, "commentsLoaded"], true);
        }

    По окончанию загрузки комментариев, ставим статье статусы, что комментарии загружены.

    Ну и осталось восстановить рендер в содержимого комментария в Comment и все будет работать:
    return (
        <div>
          <h5>{comment.user}</h5>
          {comment.text}
        </div>
      );
    Ответ написан
    Комментировать
  • Как написать приложение перестановки набора карточек?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Ну типа вот, дальше допиливайте сами:

    class Game extends React.Component {
      state = {
        panesCurrent: [],
        panesDefault: [ 1, 1, 1, 0, -1, -1, -1 ],
        panesWin: [ -1, -1, -1, 0, 1, 1, 1 ],
      }
    
      componentDidMount() {
        this.reset();
      }
    
      componentDidUpdate() {
        if (this.state.panesCurrent.every((n, i) => n === this.state.panesWin[i])) {
          setTimeout(alert, 25, 'WIN');
        }
      }
    
      onClick(index) {
        const clicked = this.state.panesCurrent[index];
        if (clicked === 0) {
          return;
        }
    
        for (let i = 1; i <= 2; i++) {
          const t = index + clicked * i;
          if (this.state.panesCurrent[t] === 0) {
            const panes = [...this.state.panesCurrent];
            [ panes[index], panes[t] ] = [ panes[t], panes[index] ];
            this.setState({ panesCurrent: panes });
            break;
          }
        }
      }
    
      reset = () => {
        this.setState(({ panesDefault }) => ({
          panesCurrent: [...panesDefault],
        }));
      }
    
      render() {
        return (
          <div>
            <button onClick={this.reset}>reset</button>
            <div className="game">
              {this.state.panesCurrent.map((n, i) => (
                <div
                  className={'pane ' + [ 'left', '', 'right' ][n + 1]}
                  onClick={() => this.onClick(i)}
                ></div>
              ))}
            </div>
          </div>
        )
      }
    }

    .game {
      font-size: 5px;
    }
    
    .pane {
      display: inline-block;
      width: 10em;
      height: 10em;
      margin: 1em;
    }
    
    .pane.right::after,
    .pane.left::after {
      position: relative;
      display: inline-flex;
      justify-content: center;
      align-items: center;
      width: 100%;
      height: 100%;
      font-family: monospace;
      font-size: 4em;
    }
    .pane.right::after {
      content: "-->";
      color: red;
      border: 2px solid red;
    }
    .pane.left::after {
      content: "<--";
      color: lime;
      border: 2px solid lime;
    }
    Ответ написан
    2 комментария
  • Чем отличается программирование под win32 и win64?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Assembler
    Седой и строгий
    Принципиально ничем. Так что смело изучайте по книге, которую посоветовали, а особенности x64 потом доучите по другому материалу.
    Ответ написан
    Комментировать
  • Где хранить статьи пользователь в "блоговом" приложении?

    shaks
    @shaks
    Как связать например данные из БД со стором в redux?

    для большого приложения - всё стандартно. 1в1 также как и не для большого ) Ты же не хранишь в состоянии - все посты, правильно? Ты хранишь там только текущую часть/страницу.

    Как организовать работу с данными?

    не понятен вопрос. Через redux - отличный вариант. Я работаю обычно в связке redux, redux-api-middlware, json-api-normalizer
    Как хранить задачи пользователя, как хранить его посты?

    в состоянии `userTasks` храни задачи пользователя, в состоянии `userPosts` - его посты ) Как вопрос, такой ответ )

    Взять посты к примеру, состояние будет выглядеть примерно следующим образом
    isFetching: false,
    pagination: {
      currentPage: 1,
      nextPage: 2,
      perPage: 50,
      totalEntires:100500
    },
    ....
    posts: {посты}
    Ответ написан
    2 комментария
  • Как реализовать панель управления для менеджера в приложении по заказу еды?

    sim3x
    @sim3x
    времени впритык

    Для начала пишите все фичи без которых нельзя обойтись
    Заказа
    Показ списка товаров
    Редактирование товаров в админке, одним админом (авторизация через nginx auth)

    Без авторизации - если останется время добавить авторизацию по соцсетям
    Без оплаты - не делать вообще

    Напишите сценарии использования
    Зашел
    Нажал на кнопку
    Заказал
    Получил

    Зашел в админку
    Увидел заказ
    Сменил ему статус
    ...

    По списку юзкейсов определить какие модели нужны для хранения состояний
    Номализовать БД

    Сделать только адаптивный сайт на том фреймворке, который лучше знаете
    Дальше, добавлять функционал
    Если останется время - пощупать реакт натив
    Ответ написан
    Комментировать
  • Как отфильтровать массив объектов, чтобы значения одного из свойств в результирующем массиве были уникальны?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    // то что вы предоставили это не JSON...
    const data = [
      { "name": "Name 1", "city": "city 1", "developer": "dev 1" }, 
      { "name": "Name 2", "city": "city 2", "developer": "dev 2" }, 
      { "name": "Name 3", "city": "city 1", "developer": "dev 3" }
    ];
    
    const cities = new Set();
    
    JSON.parse(JSON.stringify(data)).forEach(item => {
    	cities.add(item.city)
    });
    
    console.log(cities); // {"city 1", "city 2"}
    Ответ написан
    Комментировать
  • Почему не отслеживается переменная цикла?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    const cc = document.querySelector(`#${context[i]}`);

    Demo
    Ответ написан
    5 комментариев
  • Как использовать split внутри объекта/массива?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    const elements = [
      { value: "pizza", active: true, hidden: false }, 
      { value: "sushi", active: false, hidden: false },
      { value: "steak", active: false, hidden: false }
    ];
    
    elements.forEach(element => element.letters = [...element.value]);
    
    console.log(elements[0]); // { value: "pizza", active: true, hidden: false, letters: ["p", "i", "z", "z", "a"] }
    Ответ написан
    Комментировать
  • Почему код не работает в цикле?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    const moveTo = new MoveTo();
    const triggers = document.querySelectorAll(".js-trigger");
    
    for (let trigger of triggers) {
      moveTo.registerTrigger(trigger, target => {
        trigger.blur();
        
        if (target instanceof HTMLElement) target.focus();
      });
    }
    Ответ написан
    3 комментария
  • Нужно ли выполнять какую либо практику читая книгу "Совершенный Код" или можно читать как художественную литературу?

    oh_shi
    @oh_shi
    Книга читается почти как художественная. Нет в ней упражнений которые нужно выполнять по мере прочтения. Но я бы рекомендовал её людям с опытом хотя бы в пару лет, потому что восприятие материала будет сильно отличаться.
    Ответ написан
    Комментировать
  • Как спланировать свое обучение?

    voronkovich
    @voronkovich
    Есть одна волшебная книига: K&R "Язык программирования Си". Всего 200 страниц, но там и стековый калькулятор и аллокатор памяти и программировние для UNIX + множество разных упражнений.
    Прочтите эту книгу в течение этих 3-х недель. Хаскель может и подождать. В качестве упражнений делайте утилиты UNIX (coreutils): kill, nohup, ls и т.д.
    Кстати, я бы добавил в ваш список не хватает:
    1. Кент Бек. "Экстремальное программирование: разработка через тестирование"
    2. Бертран Мейер. "Почувствуй класс" (да, знаю это про Eiffel)
    Ответ написан
    4 комментария