profesor08, а если завтра добавится ещё какая-нибудь верстка внутри родителя (компонент Test в вопросе), завязанная на items? Или дочерний компонент, который эти items получает в проп и по ним что-то рисует? Тогда уже не получится при изменении данных из компонента Item просто молча перезаписать значение в массиве внутри рефа. Придется пропушивать каждую заинтересованную сторону; кого-то обязательно забудем.. С этим подходом мы теряем реактивность.
Если хочется экономить рендеры родителя, то лучше не изобретать всякие хитрые схемы, а просто использовать MobX.
profesor08, но ведь компонент Item по факту и сам будет всякий раз менять это внешнее значение? (как сказано в комментарии про useRef). Тогда внутренний useState ему без надобности.
Valera Dobroman,
1) Архитектурный бэдпрактис. Код оказывается прибит гвоздями к нестандартному окружению (имеет абсолютно неявные зависимости).
2) Потенциальный конфликт имен - если завтра в глобальную область добавят поле с таким же названием, например, появится HTMLDocument.prototype. hello, которое отличается от твоего, будут веселье.
Сергей Кузнецов, остальные резолвить вручную, смотреть что и как. А некоторые - это отдельные специальные файлы, про которые точно известно, что там надо тупо взять вариант из branch_b.
Спасибо.
У нас при мерже некоторые файлы надо именно что "в одну сторону", то есть не глядя взять из branch_b. А обычно, да, открывается файл и вручную.
два варианта:
1) до получения ответа с сервера нет смысла в коде, который использует значение из контекста. Тогда ты всё это просто не рендеришь.
2) код может работать и без этого значения. Тогда действительно, можно сделать как посоветовал WbICHA, так как проверка объекта приобретает смысл.
Но типизацию в любом случае надо сделать. Иначе будет тоскливо.
WbICHA, код засоряется. А случай не продовский - забыть добавить провайдер для контекста можно только на этапе разработки, и это будет выявлено на первом дебажном запуске.
Елена, лучше не использовать any
а норм или не норм - зависит от ситуации. Если у тебя там произвольный набор ключей, то норм. А если объект с конкретными полями, то хрень.
WbICHA, через генерик придирается к {} - там не хватает ключей. А с undefined дурацкий вариант, придется проверять результат useContext.
Было бы идеально React.createContext< MyContextType >(), с выкидыванием эксепшена при забытом провайдере, но я так и не понял, почему от такого варианта отказались (на гитхабе есть пара обсуждений).
Если хочется экономить рендеры родителя, то лучше не изобретать всякие хитрые схемы, а просто использовать MobX.