Задать вопрос
  • Как правильно разделить frontend и backend на проекте с переездом на другой стек?

    szQocks
    @szQocks
    если твой бэк работает с Vue или реакт то там должна быть простая апишка, с описанием эндпоинтов ( swagger ), просто пишешь новый фронт на реакте и общаешься с сервером через эти эндпоинты

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

    szQocks
    @szQocks
    ну дак иди да загугли

    Качественное и доступное создание сайтов
    - гуглить не научился шоль ? качественный
    Написано
  • При сборке webpack картинки из css не открываются?

    szQocks
    @szQocks
    D1ma5ta, и зачем тебе file-loader, в webpack 5, там же нормально всё можно настроить

    publicPath: "/",
          assetModuleFilename: "assets/[name]-[contenthash][ext]",

    {
              test: /\.(png|jpg|jpeg|gif|woff2|mp3)$/i,
              type: "asset/resource",
            }
    Написано
  • При сборке webpack картинки из css не открываются?

    szQocks
    @szQocks
    D1ma5ta, путь не верный в собранном файле образуется

    говорил же добавить publicPath: '/'
    Написано
  • Как получить актуальные данные в state при использовании server side event (в момент срабатывания события) в компоненте React?

    szQocks
    @szQocks
    Alex657913,
    Собственно при перезагрузке, обрыве и прочего, соединение закрывается и пересоздается
    - так и должно быть, а при размонтировании компонента ?
    Написано
  • Как получить актуальные данные в state при использовании server side event (в момент срабатывания события) в компоненте React?

    szQocks
    @szQocks
    Alex657913,

    что-то хотя бы типа этого

    export default function ConversationList() {
        let [dialogs, setDialogs] = useState([]);
    
        useEffect(() =>
          let events;
    
          function createEvents() {
            events = new EventSource(apiHost + urlPaths.eventRegistration)
    
            events.onmessage = (ev) => {
              const parsedData = JSON.parse(ev.data);
              const id = parsedData?.dialog?._id.toString();
              setDialogs(prev => [parsedData?.dialog, ...prev.filter((dialog) => dialog?._id.toString() !== id)]);      
            }
          }
          
          (async () => {
            await loadRows();
            createEvents();
          })();
    
           return () => events?.close();
        }, []);
    }
    Написано
  • Как получить актуальные данные в state при использовании server side event (в момент срабатывания события) в компоненте React?

    szQocks
    @szQocks
    Alex657913, функцию

    async function createEvents() {
            if (events) events.close();
            setEvents(events = new EventSource(apiHost + urlPaths.eventRegistration));
    
            events.onmessage = (ev) => {
                const parsedData = JSON.parse(ev.data);
                const id = parsedData?.dialog?._id.toString();
                setDialogs([parsedData?.dialog, ...dialogs?.filter((dialog) => dialog?._id.toString() !== id)]);           
            }
        }


    лучше объявить прямо в useEffect , потому что объявлять её за пределами юз эффекта смысла вообще нет, потому что юз эффект запомнил ссылку лишь на первую функцию createEvents которая была создана при монтировании компонента, и получается эта функция постоянно создаётся при каждом ререндере и нигде не используется ( мусор )

    + в useEffect надо закрывать явно соединение из функции очистки, этот функционал тоже реализовать надо, ну и в целом я всё же уверен на 10000% что это можно решить простым запросом, без EventSource, но в любом случае лишь тебе решать что юзать EventSource или запрос
    Написано
  • Как поменять свойство одного ребенка через другого?

    szQocks
    @szQocks
    Hidden Fronter, он же написал
    убедитесь что вас устраивает уровень поддержки в браузерах


    ещё как вариант

    <div>
     <img src="test.png">
     <h2>GG</h2>
    </div>


    div{
      display: flex;
      flex-direction: row-reverse;
      justify-content: flex-end;
    }
    
    img:hover + h2 {
      color: red;
    }
    Написано
  • Как получить актуальные данные в state при использовании server side event (в момент срабатывания события) в компоненте React?

    szQocks
    @szQocks
    почему это юзается через EventSource ? чем обычный запрос не угодил и JSON формат

    в нем окажется не 300, а 50 эл-тов
    твою юз эффект знает о dialogs лишь то что там пустой массив изначально, твой юз эффект не отслеживает изменения твоих diaglos

    тебе явно нужно в функции setDialogs получить предыдущее значение, и его фильтровать

    setDialogs(prev => [parsedData?.dialog, ...prev.filter((dialog) => dialog?._id.toString() !== id)]);


    да и вообще запись странная ппц, и если это опечатка то исправь шоле
    useEffect( () => async() => {
            await loadRows();
            await createEvents();
        }, []);
    Написано
  • Почему при сборке проекта вебпаком не отображаются картинки?

    szQocks
    @szQocks
    D1ma5ta, я смотрел этот видос, в принципе он неплохой, есть что от туда подчерпнуть, на основе него можно сделать сборку совместно с документацией, желательно документацию хотя бы разок почитать всю, что бы понимать что там вообще есть и что можно добавить в свою сборку

    чисто от себя мог бы наверное пару рекомендаций дать, юзать какой-нибудь swc-loader, так же в режиме разработки заменять MiniCssExtractPlugin.loader каким-нибудь style-loader для ускорения, так же поработать чуть чуть с кэшом в кофиге, либо его отключать полностью, либо частично - эта инфа так же есть в документации, например параметр cache: false вообще отключает кэш в вебпаке, так же в параметр devServer добавить allowedHosts: 'all', и минимум сделать алиас для src папки

    пример настройки для swc-loader
    {
              test: /\.jsx?$/,
              exclude: /(node_modules|bower_components)/,
              use: {
                  loader: 'swc-loader',
                  options: {
                    jsc: {
                        parser: {
                            syntax: "ecmascript",
                            jsx: true,
                            decorators: false,
                            dynamicImport: true
                        },
                        "target": "es5"
                    }
                }
              }
            }
    Написано
  • Почему при сборке проекта вебпаком не отображаются картинки?

    szQocks
    @szQocks
    D1ma5ta,
    Я полагаю так быть не должно.
    да явно не должно быть, в папке dist минимум должен быть Html файл, если его там нет, то предположу что нарушен порядок выполнения плагинов, то есть самым первым должен идти CleanWebpackPlugin а потом уже все остальные, но с эти не стакливался так как просто пользуюсь параметром clean: true в Webpack 5 версии, хотя они там вроде должны справа на лево работать на сколько помню, но может и забыл всякое бывает, в общем этот нюанс проверить тож над

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

    так же static в дев сервере, должен быть для статики в дев режиме, этот дев сервер и нужен лишь для дев режима а не для работы твоей сборки или раздачи статики в твоей сборке, у тебя статика раздается для папки dist, и я думаю что ты картинки не видишь потому что они даже и не раздаются как статика, потому что лежат в главной директории, а за статику у тебя отвечает папка dist

    на самом деле тут много проблем, переписать это всё над хм
    Написано
  • Почему при сборке проекта вебпаком не отображаются картинки?

    szQocks
    @szQocks
    publicPath установи в "/" и добавь алиас для src папки хотя б

    и на выходе кажется что у тебя и остаётся такой путь "../images/games/left-4-dead-2.jpeg" - тут явно выходит из главной директории и ищет картинку где-то в жопе

    показывай как подключаешь картинки, больше конкретики, путь то видно а как подключаешь
    Написано
  • Почему getElementById null?

    szQocks
    @szQocks
    document.getElementById('User_email'.value);
    Написано
  • Как получить значение из стейта если он еще не обновился?

    szQocks
    @szQocks
    код добавь к вопросу, а так в целом когда ты вызываешь функцию для обновления стейта и прокидываешь в неё данные - эти данные и есть следующее значение стейта, и ты их можешь использовать где-то
    Написано
  • Как в NextJS можно работать со стейт менеджером для хранения токена авторизации?

    szQocks
    @szQocks
    MishaXXL, если стор без ssr, то что-то типа этого

    import { cookies } from 'next/headers'
    import { ClientUserProvider} from '...';
    
    const getUser = async () => {
      return fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/refresh`, {
        next: { revalidate: 0 },
        method: "GET",
        headers: { Cookie: cookies().toString() },
      })
      .then(res => res.json())
      .catch(e => {
        console.log(e);
        return { user: null };
      })
    }
    
    export default async function RootLayout({ children }) {
      const user = await getUser();
    
      return (
        <html lang="en">
          <body>
            <ClientUserProvider INIT_STATE={ user }>
              {children}
            </ClientUserProvider>
          </body>
        </html>
      )
    }


    всё что попадает в children, там могут быть как серверные так и клиентские компоненты
    в примере подразумевается что сам ClientUserProvider - это клиентский компонент в котором в самом начале написано "use client"

    вообще до этого мог бы и сам додуматься, проштрудировав всю документацию как в реакте так и в нексте

    а этот RootLayout , должен находиться в папке app а сам файл с названием layout.js или ts если пишешь на ts

    так же в getUser можно проверять а есть ли кука, и нужно ли отправлять запрос или нет, в принципе если куки нет, то можно сразу возвращать { user: null }, в общем включай голову
  • Как в NextJS можно работать со стейт менеджером для хранения токена авторизации?

    szQocks
    @szQocks
    не нужно хранить в сторе токен для авторизации, кто вам сказал что нужно это делать ? что за идиота на ютубе вы там смотрите, уже 5 человек задаёт этот вопрос с токеном в сторе, за последние пару мес
  • Есть ли необходимость в битых файлах созданных при сборке Webpack?

    szQocks
    @szQocks
    файлов svg/png с подобным содержимым не должно быть, криво сборщик настроен
  • Как правильно в api реализовать систему уведомлений на сайт и в тг бота?

    szQocks
    @szQocks
    отправлялось на сайт пользователю
    как вариант, с клиента через каждые N секунд отправлять запрос на получение уведомлений

    и в телеграм бота
    - как вариант можешь отправить запрос на сервер с ботом, а сам тг бот, уже юзера уведомит об этом

    Должно ли api заниматься отправкой уведомления в телеграм или оно не должно знать о существовании тг бота и сайта?
    у всех всё индивидуально, кто как делает, кто что придумает то и делает
  • Почему 400 шрифт выглядит жирнее, чем должен быть?

    szQocks
    @szQocks
    Если шрифт используется в заголовке, то указывай там явно в стилях font-weight: 400; , что бы перебить
  • Можно ли по этому примеру сказать что я понял event loop?

    szQocks
    @szQocks
    historydev хотя я тут ошибься на счёт Promise.resolve о том что синхронно возвращает промис, ну точнее не до конца верно написал, так как изначально когда мы объявляем промис он находиться в состоянии ожидания, а сам resolve делает его в статус разрешенный типа, и вот это время между объявлением промиса и между окончанием вызов resolve - имеет промежуток, пусть он там и мизерный, но всё же он есть, поэтому можно сказать что вызов resolve асинхронный, как-то так, кароч в целом resolve нужно дожидаться поэтому пусть это будет асинхронная операция нежели синхронная, хотя по факту она синхронная но из-за долбанного промежутка выходит такая шляпа, и с resolve в executor так же

    странно что из знатоков меня никто не поправил, вот же жмоты по знаниям) даже братишка WbICHA не подсказал)