• Ajax без JQuery, какие есть библиотеки или встроенные методы?

    @sakhnyuk
    Кроме fetch в большинстве случаев ничего и не нужно. Как альтернатива могу посоветовать axios
    Ответ написан
    Комментировать
  • Как в state записать строку с html тегами?

    @sakhnyuk
    HTML можно воткнуть через пропсу dangerouslySetInnerHTML

    <div dangerouslySetInnerHTML={{__html: stringHtml}} />


    Но с этим стоит быть осторожней. Почитать можно тут
    Ответ написан
    Комментировать
  • Как переформатировать дату в нужный вид?

    @sakhnyuk
    Самое простое, это подключить библиотеку moment (или аналог day-fns и пр.)

    Чтобы получить дату в нужном формате:
    const formatedDate = moment(sourceDate).format('YYYY-MM-DD')


    Также чтобы задать формат парсинга даты (если из инпута приходит строка), нужно передать строку с форматом вторым аргументом в функцию moment:
    const date = moment(dateString, 'DD-MM-YYYY')

    Если требуется без момента, то писать свою реализацию с использованием класса Date
    Ответ написан
    Комментировать
  • Авторизация - где инициализировать?

    @sakhnyuk
    При загрузке приложения или при перезагрузки страницы, состояние приложения уже не знает про то, что мы авторизованы.

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

    При перезагрузке страницы, если данные профиля не пришли по причине того, что ты не авторизован, то отправляй пользователя на страницу логина.

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

    Нет смысла использовать localStorage и тебе показывать нечего пользователю при наличии этой ячейки. Делай запрос, а сервер тебе вернет или не вернет данные. Все просто.
    Ответ написан
  • Как умножить числа внутри массива на следующее число в массиве?

    @sakhnyuk
    Используй метод reduce у массива.
    https://developer.mozilla.org/ru/docs/Web/JavaScri...

    const getMultiple = (num) => num.toString().split('').reduce((res, item) => item * res, 1)
    console.log(getMultiple(123))
    Ответ написан
    Комментировать
  • Как добавить скролл элементу React?

    @sakhnyuk
    Добавь в зависимости эффекта loading и опускайся вниз на высоту скрола.
    Убедить, что chat.messages бывает falsy (если это пустой массив, то проверяй как chat.messages.length).

    useEffect(() => {
            if (!loading && chat.messages && chat.messages.length) {
                chatRef.current.scrollTop = chatRef.current.scrollHeight
            };
        }, [chat, loading])
    Ответ написан
    Комментировать