Ответы пользователя по тегу React
  • React, nodejs, jwt - как сделать аутентификацию и авторизацию с refresh token?

    Делаешь запрос, в middleware проверяешь токен. Если срок истек выбрасываешь ошибку.
    На клиенте при этой ошибке, делаешь отправку рефреш токен на отдельный роут.
    На нем в middleware делаешь проверку рефреш токена. Если рефреш действитейный, отправляешь
    клиенту новую пару аксесс и рефреш токенов. Если нет, то ошибку доступа.
    Ответ написан
    Комментировать
  • Почему не применяются стили для компонента, ранее уже обернутого (styled-components)?

    RazerVG
    @RazerVG Автор вопроса
    FrontEnd
    Оказывается нужно еще прокидывать className

    import React from 'react';
    import styled from 'styled-components';
    
    const Label = styled.div`
        border: none;
        border-radius: 20px;
        background-color: #f63;
        color: #fff;
        display: flex;
        align-items: center;
        justify-content: center;
        height: 40px;
        
    `;
    
    export default (props) => {
        return (
            <Label className={props.className}>
                { props.children }
            </Label>
        )
    }


    Так работает.
    Ответ написан
    Комментировать
  • Почему срабатывает стиль для наименьшего разрешения (styled-components)?

    RazerVG
    @RazerVG Автор вопроса
    FrontEnd
    Для решения проблемы необходимо понять порядок правил и параметров в компоненте
    import React from 'react';
    import styled from 'styled-components';
    
    const Column = styled.div`
        position: relative;
        width: 100%;
        padding-right: 15px;
        padding-left: 15px;
    `;
    
    const columnCount = 12;
    
    const ColumnStyled = styled(Column)`    
                
        ${props => props.xs ?
            `
            @media (min-width: 576px) {
                flex: 0 0 ${(100 / columnCount) * props.xs}%;
                max-width: ${(100 / columnCount) * props.xs}%;
            }
            `
            :
            ''
        }
        
        ${props => props.sm ?
        `
            @media (min-width: 768px) {
                flex: 0 0 ${(100 / columnCount) * props.sm}%;
                max-width: ${(100 / columnCount) * props.sm}%;
            }
            ` 
            :
            ''
        }
        
        ${props => props.md ?
        `
            @media (min-width: 992px) {
                flex: 0 0 ${(100 / columnCount) * props.md}%;
                max-width: ${(100 / columnCount) * props.md}%;
            }
            ` 
            :
            ''
        }
        
        ${props => props.lg ?
            `
            @media (min-width: 1200px) {
                flex: 0 0 ${(100 / columnCount) * props.lg}%;
                max-width: ${(100 / columnCount) * props.lg}%;
            }
            ` 
            :
            ''
        }
    `;
    
    export default (props) => {
        return (
            <ColumnStyled lg={8} md={4} sm={4} xs={4}>
                { props.children }
            </ColumnStyled>
        )
    }
    Ответ написан
    Комментировать
  • Как добавить данные в массив через console?

    Не совсем понятен Ваш вопрос, предположу, что имеете в виду это:

    mass: [{
          textBlockShow: true,
          titleChildrenBox: 'Второй блок',
          textChildrenBox: 'А это я! На меня нажми и перейди',
          CheckBoxShow: false,
          ArrowBoxShow: true,
          sliderShow: false
         }
    ]
    
    addElement = (el) => {
      mass.push({
            textBlockShow: el.textBlockShow ? el.textBlockShow : false,
            titleChildrenBox: el.titleChildrenBox ? el.titleChildrenBox : '',
            textChildrenBox: el.textChildrenBox ? el.textChildrenBox : '',
            CheckBoxShow: el.CheckBoxShow ? el.CheckBoxShow : false,
            ArrowBoxShow: el. ArrowBoxShow ? el. ArrowBoxShow : false,
            sliderShow: el.sliderShow ? el.sliderShow : false
      })
    }
    
    addElement({ sliderShow: true });


    То есть в данном случае нет необходимости каждый раз указывать все значения.
    Ответ написан
    Комментировать
  • Что react-loadable нужно оборачивать в Loader?

    RazerVG
    @RazerVG Автор вопроса
    FrontEnd
    Ошибка возникали из-за использования preloadAll, вместо preloadReady
    Ответ написан
    Комментировать
  • Как изменить брейкпоинты, max-width в Container в этой ReactJS сборке?

    Не знаю актуален ли вопрос.

    Но если смотреть код компонента Layout, то ширину получаем из функции rhythm.

    <div
            style={{
              marginLeft: `auto`,
              marginRight: `auto`,
              maxWidth: rhythm(24),
              padding: `${rhythm(1.5)} ${rhythm(3 / 4)}`,
            }}
          >


    Она находится в utils

    import { rhythm, scale } from "../utils/typography"


    Она является свойством объекта typography

    export const rhythm = typography.rhythm

    Его мы получаем из

    import Wordpress2016 from "typography-theme-wordpress-2016"
    
    const typography = new Typography(Wordpress2016)


    Для изменения исходных стилей можно попробовать (пример):
    Wordpress2016.overrideThemeStyles = () => {
      return {
        "a.gatsby-resp-image-link": {
          boxShadow: `none`,
        },
      }
    }
    Ответ написан
    Комментировать
  • Для чего нужен gatsby.js?

    Как я понял из этого видео, если есть какой-то источник контента в виде CMS и так далее. Можно получать данные из него посредством GraphQL.

    В основном это блоги и так далее.

    Здесь очень хорошо расписаны отличия - https://www.youtube.com/watch?v=VoscwJ6MGsU
    Ответ написан
    Комментировать
  • В каких случаях уместно использование react?

    Если страница динамически получает данные от сервера и необходимо манипулировать им.
    Ответ написан
  • Как применять Vue, React, ... без изменения html-кода?

    Они создают виртуальный DOM, с которым уже взаимодействуют.

    Если хотите использовать без изменения HTML-кода, то можно использовать ref на нужном элементе.
    Ответ написан
    Комментировать
  • Не могу изменить input с value из state?

    RazerVG
    @RazerVG Автор вопроса
    FrontEnd
    Решение проблемы оказалось простое, после каждого изменения поля нужно изменять state

    handlerInputChange = (event) => {
            console.log('Срабатывание функции handlerInputChange ');
            console.log('Переданное значение: ', event.target.value);
    
            event.preventDefault();
    
            this.setState({
                date: null,
                dateInput: event.target.value
            })
    
            let dateRegExp = /([0-9]{2}.[0-9]{2}.[0-9]{4})/,
                resultMatch,
                dateDelivery;
    
            let {
                minDate,
                maxDate
            } = this.props;
    
            resultMatch = event.target.value.match(dateRegExp);
    
            if (resultMatch && resultMatch.length > 0) {
                console.log('Задание state');
    
                dateDelivery = new Date(resultMatch[1].replace(/([0-9]{2}).([0-9]{2}).([0-9]{4})/, '$3-$2-$1'));
    
                if (dateDelivery && (minDate && dateDelivery < minDate || maxDate && dateDelivery > maxDate)) {
                    console.log('Ошибка');
                    return false;
                }
    
                this.setState({
                    date: moment(dateDelivery),
                    dateInput: resultMatch[1]
                });
    
                this.props.onChange(resultMatch[1] ? resultMatch[1] : "");
            }
        }
    Ответ написан
    Комментировать