Ответы пользователя по тегу React
  • Как добавить виджет 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>
    }

    Доработайте код, по-необходимости.
    Ответ написан
    Комментировать
  • Как в 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]}                      
            />
        );
    }
    Ответ написан
    Комментировать