Ответы пользователя по тегу React
  • Куда правильно добавлять react-scripts в dependency или devDependency?

    Если кратко, то DEV зависимости + обычные зависимости нужны для разработки, а только обычные - для Production. В DEV зависимости должны попадать только те пакеты, которые нужны исключительно разработчику, например, библиотеки тестирования, сборки и реформатирования. react-scripts логичнее положить именно в DEV.
    Ответ написан
    2 комментария
  • Как добавить к переменной данные, полученные из массива JSON, полученный через API?

    const [News, setNews] = useState(null);
    Эта строка создает состояние, или переменную, с начальным значением null.
    kkey=News.launches[0].id;
    Почти сразу же после этого вы пытаетесь получить свойство "launches" из "News", но вы же только что сказали, что "News" - это null. У null не может быть свойств.
    Позже в useEffect вы записываете в News данные, но это происходит именно после.
    Перенесите строку
    kkey=News.launches[0].id;
    в такую конструкцию
    const [kkey, setKkey] = useState(null);
    useEffect(() => {
      if (News !== null) {
        kkey = News.launches[0].id;
      }
    }, [News]);

    В любом случае, гарантирую, что всплывут другие ошибки. Официальный Getting Started у React в помощь.
    Ответ написан
    Комментировать
  • Как тут использовать React.memo?

    Сам компонент необходимо обернуть в memo. Этот HOC предотвращает ре-рендер компонента, если не изменились пропсы.
    export default React.memo(Button);
    Если пропсы меняются, компонент в любом случае перерендерится (если только не подставлен второй аргумент - сравнивающая пропсы функция). onClick, по идее, менятся не должен. Если же в текущем коде он все-таки меняется, попробуйте обернуть этот callback в React.useCallback, где первый аргумент - функция, а второй - при изменении каких переменных она перезаписывается.
    const handleMyButtonClick = React.useCallback(
      ([arg1, [arg2,..]]) => {...}, 
    [[dep1, [dep2,..]]]);

    В итоге должно получится что-то вроде этого:
    const onClick = React.useCallback(() => {
      setJokes(prevValue => prevValue + 5);
    },
    []);

    useCallback
    memo
    Ответ написан
    4 комментария