Проблема, с которой я сталкиваюсь, присутствует только в сокращенном / скрытом / перенесенном коде, поэтому я не могу легко воспроизвести здесь. У него также могут быть некоторые расовые условия.
У меня есть такая структура в моем приложении
const App = ({}) => {
const contextParam = get(match, 'params.contextValue');
return (
<SomeContext.provider value={contextParam}>
<UsesContext />
</SomeContext>
);
};
И мой компонент <UsesContext />
таков:
export const UsesContext = () => {
const paramFromSelector = useSelector(getParam);
const param = useContext(SomeContext) || paramFromSelector;
return (
<div>
{param ? <ParamComponent param={param} /> : <StaticComponent />}
</div>
)
}
Необходимость ||
заключается в том, что существует несколько способов просмотра приложения, которые могут или не могут получить параметр из контекста.
Функция getParam
- это просто const getParam = state => state.some.nested.value
.
Без переноса / минификации с использованием babel и веб-пакета, это никогда не сможет правильно выбрать компонент. При работе в нашей среде разработки я вижу что выглядит как устаревшее значение, возвращаемое селектором.
Быстрый Google выводит Stale Props и "Zomb ie Children ", но похоже, что это происходит только в том случае, если существуют реквизиты, которые могут измениться, что не влияет на нашу настройку, поскольку у нас нет реквизита.
Может ли это быть проблемой с зомби / устаревшей или возможно что-нибудь еще?