• Почему не срабатывает декларация темы styled при ее использовании в TyperScript?

    rockon404
    @rockon404 Куратор тега React
    zwezew, туплю. 4.1.4 это минимальная версия styled-componеnts. У вас версия ниже.
  • Закодирован? Или что это?

    Он закодирован или такой и должен быть?

    А вы вариант, что он и закодирован, и такой и должен быть рассматривали?
     
    spoiler

    Код обфусцирован
  • Почему не срабатывает декларация темы styled при ее использовании в TyperScript?

    rockon404
    @rockon404 Куратор тега React
    zwezew, декларация в файле styled.d.ts? typescript у вас выше v4.1.4? styled-components актуальная версия?
  • Дешифратор по массиву?

    Encoders, ну тогда не удивляйтесь, что не можете ничего расшифровать.

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

    Опять же, если слова больше 12 символов или их больше 12 вы теряете реальные данные.
  • Дешифратор по массиву?

    Алексей Ярков, шифровать можно, не городя своих велосипедов.
    Этот алгоритм при шифровании теряет данные - пустые строки из массива и его можно выполнить в обратном порядке, только если слова будут по 12 символов. А если слова будут больше, то безвозвратно потеряются буквы с 13-ой по последнюю.
  • Дешифратор по массиву?

    я придумал шифратор

    Зачем?
  • Можно ли как-то упростить подсчет количества гласных в строке?

    Во втором примере массива на случай null не хватает, как в третьем.
  • Почему счётчик не сбрасывается в JS?

    moreleaksILoveMS, во время каждого вызова makeCounter() создается и возвращается новая функция с новым свойством currentCount. Ничего нигде не сбрасывается.

    Пример:
    var counter = makeCounter();
    var counter2 = makeCounter();
    alert(counter()); // 1
    alert(counter()); // 2
    alert(counter2()); // 1


    Изучите внимательно теоретическую часть по ссылке в ответе. Там все это есть.
  • Правильно ли я подхожу к реализации web-приложения?

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

    Назовите хотя бы одну объективную причину, почему вы не используете Vue или React? Ваши велосипеды в коммерческой разработке никому не нужны. И есть ряд объективных причин почему их не надо писать.

    А учитывая, что вы не понимаете "работу и принцип применения паттернов" и собираетесь применять в 2019 году в вэбе классический MVC(полагаю, руководствуясь исключительно статьями в интернете), то проект с большой вероятностью обречен.
  • Правильно ли я подхожу к реализации web-приложения?

    faleaksey, искренне надеюсь, что это не коммерческий проект.
  • Как убрать глобальный хедер на некоторых страницах react?

    rockon404
    @rockon404 Куратор тега React
    Scryppi, вам и предоставили, пожалуй, одно из лучших решений, при котором ваши Header и Footer будут перенесены в компонент MainRoutes и пока не будет осуществлен переход на роуты авторизации они не будут размонтированы.

    Не надо много раз советовать бесполезные советы-"читайте документацию", если я пишу это здесь, значит все прочитано и не найдено

    Судя по вашим вопросам, все ваши проблемы именно от того, что вы их невнимательно читаете.

    Можете оставить свое-"да ты просто тупой, не умеешь доки читать" при себе

    Вам никто ничего подобного не писал.

    Я хотел рендерить футер и хедер только один раз

    И в вашем, и в моем примерах Header и Footer будут перерисовываться каждую смену роута. Надо либо оборачивать в connect, либо реализовывать shouldComponentUpdate. Размонтироваться они при этом не будут(в моем примере только при переходе на sing роуты).

    если пихать его, где он нужен(почти везде)

    Вам достаточно разместить их в одном единственном месте, в компоненте MainRoutes.

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

    Я надеюсь вы понимаете, что монтирование и render это разные вещи.
  • Как убрать глобальный хедер на некоторых страницах react?

    rockon404
    @rockon404 Куратор тега React
    Scryppi,
    а можете подсказать, где именно в документации есть фича не рендерить компоненты?

    Нет такой фичи.

    Вы неправильно к решению задачи подходите. Вам надо добавлять Header и Footer в код только там, где вы собираетесь их отображать.

    Я пробывал внутрь компонента добавлять роуты, мне приходила ошибка, что компонент не может содержать в себе роуты

    Route можно использовать в любом компоненте-потомке Router. Читайте документации инструментов которые используете.
  • Почему теряется this?

    rockon404
    @rockon404 Куратор тега React
    Алексей Беспалов,
    Тут я не понял, как его можно вынести за класс, он же к this.state обращается?

    componentDidMoun() {} // Метод класса
    comonentDidMoun = () => {} // Свойство класса


    При обращении appInstatnce.componentDidMount(), в случае с методом, контекст не теряется.

    У вас ошибка в коде, замените:
    return (
      { Contener }
    );

    на:
    return Contener;
    И исправьте ошибку в слове 'Container', глаза режет. А еще лучше уберите лишнюю переменную и оберните список в div или React.Fragment
    return (
      <div>
        {bookmarks.map((currentBk) => (
          <BkContainer
            key={currentBk.id}
            bkFolder={currentBk.children}
            title={currentBk.title}
           />        
         )}
      </div>
    );


    Проблем с this.setState у вас быть не должно.
    И изучайте официальную документацию.
  • Почему теряется this?

    rockon404
    @rockon404 Куратор тега React
    Все равно this нет.

    Где нет?

    1. В представленном коде this не теряется.
    2. Нет смысла описывать componentDidMount свойством класса.
  • Где необходимо размещать componentDidMount и componentDidUpdate?

    rockon404
    @rockon404 Куратор тега React
    В документации рекомендуется лишь попробовать хуки в новом коде. Классы никуда не уходят. То, что хуки станут основным способом написания компонентов ожидается лишь в очень долгосрочной перспективе.
  • В чем смысл быть гуру тостера?

    по работе только ей и пользуюсь для связи с коллегами

    А чем телега или slack не угодили? Последний раз об ICQ лет 15 назад слышал.
  • Как передать информацию об успешной авторизации в facebook с помощью passport.js в redux?

    rockon404
    @rockon404 Куратор тега React
    angelzzz, пишете init action. В нем проверяете куки. Если есть токен, то пишите его в store. Вызываете этот action до рендера приложения:
    const store = createStore();
    store.dispatch(init());
    
    ReactDOM.render( /* ... */);
  • Не говнокод ли я пишу (часть 2)?

    а цель была написать именно свой велосипед!

    Ну получился не очень-то пригодный для езды и при этом overhead для задачи которую решает.

    Но почему плохого кода так и не сказали.

    Тут долго объяснять. Если бы вы написали приложение с использованием известного фреймворка, то представители комьюнити с радостью бы попинали ваш код. Но тут велосипед и надо потратить много времени на анализ, чтобы сказать что-то объективное. Делать это мало кому захочется.

    Несколько претензий навскидку

    1.
    app.obj = "Юпитер";
    app.myWeight = 60;

    Ну зачем тут вообще сеттеры? Все это только усложняет анализ кода. Интерфейс можно было сделать более очевидным и удобным. Сами можете ответить зачем наплодили геттеров и сеттеров?

    2. А почему вообще у вас этим занимается ядро приложения? Почему не модуль? Добавим фич и здравствуй God object.

    3.
    get obj() {
        this.viewer.render(this.strings.obj);
        return this.store.obj;
      }

    Почему геттер выполняет рендер?

    4. this.event.dispatch("SET_OBJECT", obj);
    А почему строки, а не константы со строчным значением? Здравствуй целый класс багов вроде: "SET_OBEJCT"

    5.
    import obj from "../utils/";
    
    const { finder } = obj;

    Зачем? Почему не поименный экспорт? obj - не очевидное имя. Дефолтный импорт следовало назвать utils.

    6.
    export default program
      .setStore(store)
      .setViewer(view)
      .setString(phrases)
      .setPhrase(cphrase)
      .setExecutors(cweight)
      .setDataAction(cdata)
      .setEvent(event)
      .init();

    В чем смысл цепочной передачи параметров? Почему не объект? Цепь имеет смысл когда число звеньев может меняться в зависимости от задач. Реактивное программирование, цепочное преобразование данных и тп.

    7.
    const execute = new Map();
    
    export default execute
      .set("Луна", x => x * 0.17)
      .set("Юпитер", x => x * 0.5)
      .set("Сатурн", x => x * 0.65);

    Нарушен принцип DRY. Усложним рассчет и переделывай для всех планет.

    8. Почему Файл actions экспортирует Event?

    9. reducer пишет значения в два источника правды?

    10. А промежуточное ПО? Ни хранилище, ни app его не поддерживают.

    11. Редьюсеры имеют доступ ко всему хранилищу и изменяют его напрямую. Привет еще один класс багов(Вася и Федя решили использовать один ключ в разных редьюсерах). Это не FLUX.

    12. Еще Редьюсеры не могут обрабатывать один и тот же тип эвента.

    13. Вольное использование let/const. Почитайте что пишут об этом в современных гайдлайнах. В современном фронтенде когнитивная нагрузка на программиста очень высокая и надо стараться делать все, чтобы она была ниже.

    14. export default view.init();
    Зачем тут init при экспорте? Не надо так делать.

    Чего в коде нет: асинхронного кода, работы с реальными данными, взаимодействия с пользователем.

     
    Радует глаз разве только аккуратное форматирование. Ну и неплохо, что знаете о приемах функционального программирования.

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

    Дьявол кроется в деталях. Попробуйте и поймете.

    Хорошей компании надо чтобы ты уже чуть ли не всё умел, нет?

    На позицию Junior к вашим знаниям, необходимо хотя бы изучить фреймворк и решить реальную задачу. Комплексную. Вроде WeatherApp с сохранением списка избранных городов, определением геопозиции и поиском. После ревью и работы над ошибками можно откликаться на вакансии и пробоваться на собеседованиях. Естественно, верстку тоже надо знать. Плюсом будет:
    1. базовые знания npm
    2. базовые знания webpack
    3. базовые знания TypeScript
    4. базовые команды git
    5. английский на уровне чтения технической литературы

    тут человек (для меня авторитет) подразумевает, что работа в компании (рядовой) вряд ли поднимет тебя в программировании

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

    Я считаю, человек сам себя должен развивать

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

    Могу посоветовать осваивать React/Redux. Функциональный уклон стека должен вам понравиться.
  • Netlify CMS для Gatsby JS?

    rockon404
    @rockon404 Куратор тега React
    1. Ставите.
    2. Смотрите.
    3. Решаете подходит или нет.