"каждый регистр может содержать двоичное число" не значит 0 или 1. число не обязано быть однозначным. в регистре из 16 битов может быть записано любое 16-ти значноедвоичное (то есть из 0 и 1) число. ну и диапазон соответсвенно от 00...00 до 11...11
кажется один кейс тут упущен. если родительский компонент, например, хочет чтобы видео всегда проигрывалось (не реагировало на внутренние кнопки стоп), то это следует написать так
Оба примера в принципе нерабочие. Мемоизация тут не при чём. Такое ощущение, что ты пишешь "можно коряво написать рекурсию и никогда из неё не выйти". Да, можно. Если в твоих примерах убрать withMemo, то будет просто сломанная рекурсия
Я не уверен, что понимаю вопрос. Поверхностно всё просто, результат есть в кэше - берём оттуда, функцию не вызываем. Нет кеша - вызываем функцию и записываем в кэш. Даже при отложенных вычислениях мы Сразу кладём в кэш промис
Попробуй написать маленький пример рекурсивной функции и поставь в нём console.log'и. Если так всё равное не разберёшься. То скинь пример своей функции сюда - попробую помочь
Этот вопрос возник до прочтения секции "Мемоизация рекурсивных функций" или после? Если сделать как в примере в этой секции, то не меомоизированной версии функции не будет. Будет только мемоизированая версия и вызываться всегда будет только она
Спасибо. Это именно то, до чего я хотел бы сам додуматься) Кстати, это то же решение с правайдером, что я увидел в исихониках библиотеки упомянутой в заключении. И за ссылку на статью отдельное спасибо
я не дочитал. так что не уверен это намеренная ошибка или нет
но дальше тоже связанные ошибки
тоже в корне не верно
"каждый регистр может содержать двоичное число" не значит 0 или 1. число не обязано быть однозначным. в регистре из 16 битов может быть записано любое 16-ти значное двоичное (то есть из 0 и 1) число. ну и диапазон соответсвенно от 00...00 до 11...11
точно всё сработает? может, конечно, я не всё в голове удержал. но тогда укажите где я ошибся.
пользователь нажал на внутреннюю кнопку паузы (или пробел, не важно)
плеер встанет в паузу
отработает колбек этой подписки
player.current.addListener("statusChange", props.onStatusChange);
props.onStatusChange
передаётся пустой (или вовсе не передаётся). соответсвенно в родителе ничего не меняется и вprops.status
всё ещё лежит"playing"
и того имеем
props.status === "playing"
а плеер на паузеэтот
useEffect(() => {...}, [props.status]);
не сработает, потому чтоprops.status
не поменялсяспасибо за статью!
кажется один кейс тут упущен. если родительский компонент, например, хочет чтобы видео всегда проигрывалось (не реагировало на внутренние кнопки стоп), то это следует написать так
но это просто не сработает
Оба примера в принципе нерабочие. Мемоизация тут не при чём. Такое ощущение, что ты пишешь "можно коряво написать рекурсию и никогда из неё не выйти". Да, можно. Если в твоих примерах убрать
withMemo
, то будет просто сломанная рекурсияЯ не уверен, что понимаю вопрос. Поверхностно всё просто, результат есть в кэше - берём оттуда, функцию не вызываем. Нет кеша - вызываем функцию и записываем в кэш. Даже при отложенных вычислениях мы Сразу кладём в кэш промис
Попробуй написать маленький пример рекурсивной функции и поставь в нём console.log'и. Если так всё равное не разберёшься. То скинь пример своей функции сюда - попробую помочь
Этот вопрос возник до прочтения секции "Мемоизация рекурсивных функций" или после? Если сделать как в примере в этой секции, то не меомоизированной версии функции не будет. Будет только мемоизированая версия и вызываться всегда будет только она
спасибо, пиши ещё
только классовый компонент не нужен был. для форс-апдейта можно и useState юзать
const [, forceUpdate] = useState();
forceUpdate({});
а конкретней вот так: https://codesandbox.io/s/mutable-wave-sfxhz?file=/src/App.js
практической пользы правда не смог придумать для хука. всегда заместо него можно просто заспредить пропсы <ComponentToCurry {...props1} {...props2} />
я про
passive
не знал. сейчас почитал, узнал что-то новое, спасибо. но ваш комментарий неверенотсюда https://developer.mozilla.org/ru/docs/Web/API/EventTarget/addEventListener#%D1%83%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%BF%D1%80%D0%BE%D0%BA%D1%80%D1%83%D1%82%D0%BA%D0%B8_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_passive_true
Отличное внимание к деталям, чувствуется опыт, побольше бы таких на собесы приходило)
Тоже верно подмечено, спасибо
хорошее дополнение