• Как добавить виджет vk для сайта на react?

    semyonfedoseev
    @semyonfedoseev
    Могу загуглить вместо тебя
    Любой подобный скрипт следует инициализировать в хуке useEffect.
    Для того, чтобы встроить полученный модуль в элемент div, необходимо воспользоваться хуком useRef.
    Это будет выглядеть, примерно, следующим образом:

    import {VK} from "vk"
    
    const Component = () => {
    const vkRef = useRef(null);
    
    useEffect(() => {
      if (vkRef.current) {
        VK.Widgets.Group(vkRef.current, {mode: 0, width: "220", height: "400"}, 1);
      }
    }, [vkRef])
    
    return <div ref={vkRef}></div>
    }

    Доработайте код, по-необходимости.
    Ответ написан
    Комментировать
  • Как подключить SCSS к html?

    semyonfedoseev
    @semyonfedoseev
    Могу загуглить вместо тебя
    Прибегайте к сборщикам в случае крайней необходимости.
    Вот так может выглядеть реализация в HTML:

    <!DOCTYPE html>
    <html>
        <head>
            <title>Page Title</title>
            <script src="https://cdnjs.cloudflare.com/ajax/libs/sass.js/0.9.12/sass.sync.min.js"></script>
            <style type="scss">
    @mixin l2d($color,$strength){
        background:linear-gradient(lighten($color,$strength),darken($color,$strength));
        &:active{
            background:linear-gradient(darken($color,$strength),lighten($color,$strength));
        }
    }
    body{
        @include l2d(#aa2424,10%);
        min-height:100vh;
    }
    #hello{
        margin:auto auto auto auto;
        width:96vw;
        user-select:none;
        &:after{
            content:" ";
        }
    }
            </style>
            
            <script>
                Sass.compile(document.querySelector("style[type=scss]").innerHTML,function(res){
        var s=document.createElement("style");
        s.innerHTML=res.text;
        res.formatted&&console.error(res.formatted); //if error console.error it.
        res.text&&document.head.appendChild(s);// append style element only if no error.
    });
            </script>
        </head>
        <body>
            <h1 id="hello">Hello, this is styled using SCSS.</h1>
        </body>
    </html>


    Вы можете вынести стили в отдельный файл:
    <link rel="stylesheet" type="scss" href="style.scss">


    Источник: https://github.com/sreegithub19/programming_langua...
    Ответ написан
    3 комментария
  • Стоит ли подключать 1 css файл со всеми стилями для разных HTML документов? Или лучше разделять?

    semyonfedoseev
    @semyonfedoseev
    Могу загуглить вместо тебя
    Вероятно, Вам следует узнать о том, что такое Gulp или Parcel, хотя бы издалека, если уже не познакомились. Это поможет автоматизировать минификацию. Самостоятельный разбор и просмотр видео в YouTube помогут ответить на множество вопросов.

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

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

    Вобщем, для того, чтобы переиспользовать некоторые элементы интерфейса, по-моему мнению, лучше импортировать все стили в один файл, если это не противоречит принятым принципам реализация веб-ресурса. Некоторые сборщики умеют переносить только выбранные части стилей и даже хранить их в head, без подгрузки файла стилей, вообще. Моя рекомендация относится к частой практике, Вы можете найти оптимальный вариант решения под конкретный проект. Универсальную пилюлю, пока что, не смог найти.

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

    Возможно, Вас может заинтересовать следующая статья: https://ru.bem.info/methodology/filestructure
    Ответ написан
    Комментировать
  • Как в useState передать динамический объект?

    semyonfedoseev
    @semyonfedoseev
    Могу загуглить вместо тебя
    Вы не задействовали сеттер setItem для изменения состояния.
    Изначально при рендере у Вас tasks пустой, поэтому list пустой.

    const [list, setItem] = useState([]);
    
    const keys = LocalStKeys();
    let tasks = [];
    for (let taskText of keys) {
        let ob = {text: taskText, key: Date.now()};
        tasks.push(ob);
    }
    
    setItem(tasks)
    
    console.log(list)
    Ответ написан
  • Не подгружаются дочерние страницы в react router, как исправить?

    semyonfedoseev
    @semyonfedoseev
    Могу загуглить вместо тебя
    Проверьте то, что у Вас React Router версии 6.
    При Outlet в атрибуте path не нужно указывать знак звёздочки "*".

    <Routes>
      <Route path='/' element={<MainPage />} />
      <Route path='/classical' element={<Classical />}>
        <Route index element={<January />} />
        <Route path='january' element={<January />} />
      </Route>
      <Route path='/page_2' element={<Page2 />} />
      <Route path='/page_3' element={<Page3 />} />
      <Route path='*' element={<Error404Page />} />
    </Routes>

    import { Outlet } from 'react-router-dom';
    
    export const ClassicalPage = () => {
      return (
        <div>
          <Outlet />
        </div>
      );
    };

    export const JanuaryPage = () => {
      return (
        <div>
          Содержимое страницы
        </div>
      );
    };
    Ответ написан
    Комментировать
  • В каких случаях использовать Vue, а в каких React?

    semyonfedoseev
    @semyonfedoseev
    Могу загуглить вместо тебя
    Как Vue-core, так и React-core Вы можете использовать в качестве библиотеки при создании интерфейсов для отрисовки отдельных элементов или формирования полноценного фреймворка. Если желаете, даже сможете писать мобильные приложения с помощью Vue, например, через NativeScript или Capacitor.

    Мне, по личному опыту, более нравится React с JSX, так как, к примеру, можно инициализировать (создавать) функции сразу внутри компонента и понимать то, что это единый компонент. JSX более удобно читаемый при рассмотрении с привычным JavaScript. Лично моё мнение, что определение методов функции через объект старая эпоха и не имеет для меня перспективы на будущее. Конечно, впринципе, можно долго холиварить какая марка автомобиля лучше, но всё же, по моему мнению, лучше смотреть на простоту из коробки, без дополнительных танцев и изучений технических практик. Имхо.
    Ответ написан
  • Как при нажатиии на строку в таблице №1 выводить дочерние данные в таблицу №2?

    semyonfedoseev
    @semyonfedoseev
    Могу загуглить вместо тебя
    Извините, но у Вас слишком много букв в коде. В таких случаях, лучше всего, отрефакторить лишнее, декомпозировать оставшееся и оформлять код в онлайн IDE (например, CodeSandbox). К тому же, подобное оформление вопроса неудобно читать.

    Мой вариант реализации для таблицы DataGrid:
    https://codesandbox.io/s/material-demo-forked-gu2f...

    Для вывода дополнительных дочерних строк в каждой ячейке рендерится объект с дочерними строками через map. Можете оформить так, как Вам удобнее, я лишь показал минимальный пример вывода данных.

    Возможно, Вам подойдёт другой вид таблицы из урока этого же автора, если желаете сделать таблицу более похожей на таблицу из платной версии:
    https://smartdevpreneur.com/how-to-use-the-mui-col...

    Вы сможете также выводить дополнительные строки через map, но уже полностью всю строку.

    Вероятно, Вас могла бы заинтересовать таблица Ant Design:
    https://ant.design/components/table#components-tab...
    Ответ написан
    3 комментария
  • Как правильно подключить внешний скрипт через URL в React?

    semyonfedoseev
    @semyonfedoseev
    Могу загуглить вместо тебя
    Попробуйте подключить скрипт в <head> или перед</body> html документа. Этот подход даст единообразие подключения скриптов, а также все скрипты будут в одном месте. Если необходимо подключение библиотеки, вероятно, лучше воспользоваться map зависимостей в сборщике приложения. В некоторых сборщиках имеется возможность импорта напрямую по URL в файл содержащий компонент. Вы также можете написать свой метод для подключения скриптов.

    Попробуйте ознакомиться со следующим материалом:
    https://stackoverflow.com/questions/47495833/how-t...
    Ответ написан
    1 комментарий
  • Как избежать перерисовки компонента?

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

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

    Для перерисовки только конкретного компонента, в котором были изменения, не передавайте пропсы или контекст зависящие от изменения другого компонента. Изолируйте состояние через useState или Store (Redux, MobX и др.) только в этом компоненте, не задействуя другие.

    Для отрисовки больших данных, Вы можете использовать, например, методы виртуализации или контролировать поступление и обработку данных отдельно.

    Попробуйте ознакомиться со следующим материалом:
    https://habr.com/ru/companies/timeweb/articles/684718/
    Ответ написан
    Комментировать
  • Как в React использовать props в аттрибутах?

    semyonfedoseev
    @semyonfedoseev
    Могу загуглить вместо тебя
    Вы можете использовать деструктуризацию или вынести свойства в объект. Пример относительно пропсов, без заинтересованности мной formik.

    Попробуйте ознакомиться со следующим материалом:
    https://react.dev/learn/passing-props-to-a-component

    <FormikTextField formik={formik} name={nickname} label="Nick Name" />

    export default function FormikTextField({formik, name, label}) {
        return (
            <TextField
                name={name} 
                required
                id={name}
                label={label}
                sx={{width:1}}
                value={formik.values[name]}
                onChange={formik.handleChange}
                error={formik.touched[name] && Boolean(formik.errors[name])}
                helperText={formik.touched[name] && formik.errors[name]}                      
            />
        );
    }
    Ответ написан
    Комментировать
  • Как с помощью CSS сделать обрезку картинки до определенного размера?

    semyonfedoseev
    @semyonfedoseev
    Могу загуглить вместо тебя
    Если нужны картинки разного ракурса под различную ширину экрана:
    https://habr.com/ru/post/572368/

    <picture>
      <source
        media="(max-width: 480px)"
        srcset="
          cropped-bears-480x270.jpg 480w,
          cropped-bears-960x540.jpg 960w
        "
      />
      <source
        media="(max-width: 960px)"
        srcset="bears-960x540.jpg 960w, bears-1920x1080.jpg 1920w"
      />
      <img src="bears-1920x1080.jpg" alt="bears" />
    </picture>
    Ответ написан
    Комментировать