Профиль пользователя заблокирован сроком с 18 марта 2020 г. и навсегда по причине: нарушение п. 6.6 правил сайта
  • Где лучше хранить данные?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Забудьте о таких подходах в React. Лишняя бесполезная сущность. Лучше вынести в отдельный модуль сами запросы к API.
    2. Если используете голый API React, то это самый верный путь, так как при изменении state произойдет обновление компонента и его потомков.

    import React, { Component } from 'react';
    import { Child } from './Child';
    import { getSomeData } from './api';
    
    class Parent extends Component {
      state = {
        data: [],
      };
    
      componentDidMount() {
        getSomeData.then(data => this.setState({ data });
      }
    
      render() {
        return <Child data={this.state.data} />;
      }
    }
    Ответ написан
    8 комментариев
  • Как вы строите структуру папок для проекта?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Тыц
    Более подробную информацию о том, что прочитали по ссылке уже ищите в Google. Подробно изучите подходы: feature-first, ducks pattern и почитайте о недостатках подхода file-type-first
    Ответ написан
    2 комментария
  • Полезно ли изучать React/Redux, если хочешь работать с VueJS?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Изучайте то, что больше нравится.
    Хорошо знать и практиковать оба фреймворка(да, да, да: вообще-то React библиотека бла, бла, бла) нет особого смысла.
    Хотите попробовать React - пробуйте.

    ИМХО хорошо изучите React, на Vue переходить не захотите.
    Ответ написан
    3 комментария
  • Как восстановить удаленные данные c таблицы?

    0xD34F
    @0xD34F Куратор тега React
    Как я думал сделать:
    По клику на deleteделать поля Name и Id visibility: none и в стейте сделать переменную isDeleted: true, если true то рендерить кнопку Restor'а, по клику на нее полям возвращать visibility.

    Окей, делаем:

    const ProductItem = ({ product, toggleRow }) => {
      return (
        <tr>
          <th>{product.deleted || product.id}</th>
          <td>{product.deleted || product.name}</td>
          <td>
            <button onClick={toggleRow}>
              {product.deleted ? 'Restore' : 'Delete'}
            </button>
          </td>
        </tr>
      );
    };
    
    class Products extends React.Component {
      state = {
        products: [ 'Apple', 'Peanut', 'Tomato', 'Cucumber', 'Banana', 'Lemon' ].map((n, i) => ({
          id: i + 1,
          name: n,
          deleted: false,
        })),
      }
    
      toggleRow(index) {
        this.setState(({ products }) => ({
          products: products.map((n, i) => i === index
            ? { ...n, deleted: !n.deleted }
            : n
          ),
        }));
      }
    
      render() {
        return (
          <table>
            <thead>
              <tr>
                <th>#</th>
                <th>Product Name</th>
                <th>Delete / Restore</th>
              </tr>
            </thead>
            <tbody>
              {this.state.products.map((n, i) => (
                <ProductItem
                  key={n.id}
                  product={n}
                  toggleRow={() => this.toggleRow(i)}
                />
              ))}
            </tbody>
          </table>
        );
      }
    }

    Правда непонятно, при чём тут удаление? - данные-то на месте остаются, просто не отображаются.
    Ответ написан
    1 комментарий
  • Как будет выглядеть аналогичный код на любом action creator?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Вопрос поставлен некорректно. Action creators - это функции возвращающие объекты действия(Actions) те, что у вас в actions.js
    Action это объект со свойством type(типом действия) и опционально полезной нагрузкой, который передается в dispatch.

    redux-actions и redux-act это бойлерплейт утилиты для генерации action creators и редьюсеров. Советую пока даже не смотреть в их сторону(а можно и вообще не смотреть), лучше хорошо изучите голый API Redux.
    Еще советую потратить время на знакомство с immutable.js

    И еще, ваш код в actions.js не будет работать, так как функции loading, success, error используются раньше, чем определены.
    Либо поменяйте местами, так чтобы send был объявлен под ними:
    const loading = () => ({ ... });
    const success = () => ({ ... });
    const error = (message) => ({ ... });
    
    export const send = ({ name, phone }) => { ... };

    либо используйте для них ключевое слово function:
    export const send = ({ name, phone }) => { ... };
    
    function loading() { 
      return { ... };
    };
    
    function success() { 
      return { ... };
    };
    
    function error(message) { 
      return { ... };
    };

    А тут можете почитать о разнице между Function Declaration и Function Expression.
    Ответ написан
    Комментировать
  • Где джуну получать тестовые задания?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Для тестового задания надо что-нибудь посложней. Простенький real world app.

    Например простенький Weather App:
    1. Строка поиска городов(можно использовать например API Google):
    2. Результат поиска с погодой.
    3. Список сохраненных городов.
    4. Погода в текущей позиции.
    Для погоды можно использовать API любого сервиса(например OWM API).
    Такое приложение спроектировать сложней, тут помимо тупой работы с API библиотек придется проектировать.
    Можно использовать роутинг, а можно обойтись и без него. Да и целый ряд задач, над решением которых новичку придется хорошо подумать:
    1. Структура приложения
    2. Работа с API
    3. Реализация строки поиска
    4. Обработка исключений( нет связи, отклонили использование геолокации)
    5. Верстка
    Когда такой проект начнет оживать и работать как задумано это, конечно, принесет человеку радость и уверенность в себе.

    Так же можно реализовать Dashboard, но это посложней и требует серверной части или использование публичного тестового API вроде Star Wars API
    Еще можно реализовать простенький клиент для любого сервиса. Например поиски и проигрывание видео c Youtube.

    ИМХО совсем простые задачи, конечно могут показать знание API той или иной библиотеки, но обладает ли кандидат навыками необходимыми для Junior Developer они не отразят. А Junior Developer должен уметь самостоятельно решить точно поставленную задачу с пояснениями и рекомендациями по пути ее решения.
    Ответ написан
    8 комментариев
  • Как работать с API?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. да
    2. да
    3. лучше сохранять в state данные, а мапить их уже в render
    Ответ написан
    1 комментарий
  • Как удалить конкретный элемент в массиве?

    mannaro
    @mannaro Куратор тега JavaScript
    Умею профессионально гуглить
    .filter / .splice
    Ответ написан
    Комментировать
  • Как получить номер элемента в массиве по клику?

    @Bhudh
    var cellsArray = [ ...document.querySelectorAll('td') ];
    var listener = e => document.getElementById('output').innerHTML = cellsArray.indexOf(e.target); // Создать элемент вывода надо заранее
    
    cellsArray.forEach( cell => cell.addEventListener( 'click', listener ) );
    Ответ написан
    Комментировать
  • Можно ли переходить на изучение фреймворков?

    rockon404
    @rockon404
    Frontend Developer
    Изучайте React. Приложения на ванильном JS писать не надо, не повторяйте ошибки разработчиков из 2014 года.
    Ответ написан