miliko0022
@miliko0022
Краткие личные сведения, включая интересующую вас

Нужно ли использовать useMemo в hooks?

я создал useBanner hooks

const useBanner = (array, yardage) => {
  const [bannArr, setBannArr] = useState(array.slice(0, yardage));
  const [bannListIndex, setBannIndex] = useState(1);

  return {
   ....
  };
};

Правильно ли я делаю что значение и props кидаю в useState ?
допустимо я использовать useBanner.

const Banner= ({
  array,
  yardage
}) => {
  const { bannForth, bannBeck, bannArr } = useBanner(array, yardage);
  return (
    ...
  );
};

когда здесь будут меняться props .
Будет ли меняться состояние в useBanner.
или это считается антипаттерны я должен написать всё это в useMemo

const useBanner = (array, yardage) => {
  const [bannArr, setBannArr] = useState([]);
  const [bannListIndex, setBannIndex] = useState(1);

 useMemo(() => {
    setBannArr(array.slice(0, yardage));
    setBannIndex(1);
  }, [array, yardage]);

 
  return {
   ....
  };
};
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
Для дорогостоящих операций лучше использовать ленивую инициализацию состояния:
const useBanner = (array, yardage) => {
  const [bannArr, setBannArr] = useState(() => array.slice(0, yardage));
  const [bannListIndex, setBannIndex] = useState(1);

  return {
   ....
  };
};

Не думаю, что в первом хуке тут будет какой-либо выигрыш в производительности.
Во втором ленивую инициализацию делать бессмысленно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
Правильный ответ я уже дал тут: Если props отсутствует Нужно ли использовать memo?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
16 июл. 2019, в 00:49
15000 руб./за проект
15 июл. 2019, в 23:17
3000 руб./за проект
15 июл. 2019, в 23:03
1000 руб./за проект