• Как развиваться в программировании не привязываясь к языку?

    myjcom
    @myjcom
    Clean Code: A handbook of software craftsmanship / Чистый код: Создание, анализ и рефакторинг
    Год издания: 2013
    Автор: Robert Martin / Роберт Мартин
    ISBN: 978-5-496-00487-9

    The Clean Coder: A Code of Conduct for Professional Programmers / Идеальный программист. Как стать профессионалом разработки ПО
    Год издания: 2012
    Автор: Robert C. Martin / Роберт Мартин
    ISBN: 978-5-459-01044-2

    Алгоритмы. Справочник с примерами на C, C++, Java и Python
    Год издания: 2017
    Автор: Хайнеман Д., Поллис Г., Селков С.
    ISBN: 978-5-9908910-7-4

    Design Patterns. Elements of Reusable Object-Oriented Software/Приемы объектно-ориентированного проектирования. Паттерны проектирования
    Год издания: 2015
    Автор: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides/Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж
    ISBN: 978-5-496-00389-6

    Test-driven development by example / Экстремальное программирование. Разработка через тестирование
    Год издания: 2017
    Автор: Kent Beck / Кент Бек
    ISBN: 978-5-496-02570-6

    Грокаем Алгоритмы. Иллюстрированное пособие для программистов и любопытствущих
    Год издания: 2017
    Автор: Бхаргава А
    ISBN: 978-5-496-02541-6

    Алгоритмы. Теория и практическое применение
    Год издания: 2016
    Автор: Стивенс Род
    ISBN: 978-5-699-81729-0

    прочитать нужно все

    ну и на закуску
    C Unleashed / Искусство программирования на C. Фундаментальные алгоритмы, структуры данных и примеры приложений. Энциклопедия программиста
    Год: 2001
    Автор: Heathfield R., Kirby L. / Хэзфилд Р., Кирби Л.
    ISBN: 0-672-31896-2 / 966-7393-82-8
    Ответ написан
    9 комментариев
  • Как задать отображение spinner до ответа от сервера reactJS?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Идеальный вариант, создать для этих задач компонент:
    function Block({ 
      children,
      isLoading, 
      isError, 
      isEmpty, 
      emptyText, 
      fetch,
    }) {
      const showPreloader = isLoading && !isError;
      const allDataIsReady = !isLoading && !isError;
      const showEmptyText = allDataIsReady && isEmpty && emptyText;
    
      return (
        <Wrapper>
          {showPreloader && <Preloader />}
          {isError && <TryAgain fetch={fetch} />}
          {showEmptyText && <Empty>{emptyText}</Empty>}
          {allDataIsReady && children}
        </Wrapper>
      );
    }


    И использовать его в коде так:
    render() {
      const { isLoading, isError, orderList } = this.props;
    
      return (
        <Block
          isLoading={isLoading}
          isError={isError}
          isEmpty={!ordersList.length}
          fetch={this.fetchOrdersList}
          emptyText="You don't have any orders."
        >
          {ordersList.map(order => <Order key={order.id} order={order} />}
        </Block>
      )
    }


    Название служебных дочерних компонентов компонента Block условные, но думаю суть их задач передают.
    Ответ написан
    4 комментария