Я использую в своем проекте перехватчики реакции. Я пытаюсь предотвратить повторную визуализацию сложной кнопки / интерфейса, где я хочу открыть модальное окно справки. Однако эту кнопку необходимо использовать во всем приложении, не вызывая повторной визуализации. Есть ли способ использовать установщик без принудительного обновления этого несвязанного компонента?
Вот самый упрощенный пример кода, который я мог сгенерировать. Это поставщик контекста:
// Provider.js
export default function ModalProvider(props: React.PropsWithChildren<{}>) {
// adding the event state info
const [helpModalOpen, setHelpModalOpen] = useState(false as any);
const contextValue = {
helpModalOpen,
setHelpModalOpen,
};
return (
<StateContext.Provider value={{...contextValue}}>
{props.children}
</StateContext.Provider>
);
}
export function useModalState() {
const context = useContext(StateContext);
if (!context) {
throw new Error('useModalState must be used within the AppStateProvider');
}
return context;
}
И это очень сложный компонент, который нельзя разбить (это видеоинтерфейс):
// ComplexButtonToOpenHelpModal.js
export default function ComplexComponent() {
const {setHelpModalOpen} = useModalState();
return (
<ExtremelyComplexComponent onClick={setHelpModalOpen} />
);
}
Хотя это простой пример, мне нужно использовать аналогичный код во всем этом приложении.