[英]useEffect doesn't re-render main parent component
當我更改其他組件中的 state '單擊按鈕' 時,useEffect 不會重新呈現主要父組件。 當我重新加載頁面時,神奇的天堂。 我應該如何在不重新加載頁面的情況下在此事件上重新呈現主<App />
組件?
const ResponsiveAppBar = () => {
const defaultDark = window.matchMedia(
'(prefers-color-scheme: dark)'
).matches;
let [theme, setTheme] = useLocalStorage(
'theme',
defaultDark ? 'dark' : 'light'
);
React.useEffect(() => {
console.log('theme changed into: ', theme);
<App />;
}, [theme]);
const switchTheme = () => {
const newTheme = theme === 'light' ? 'dark' : 'light';
console.log(newTheme);
setTheme(newTheme);
};
您正在尋找的內容在此處進行了解釋 (Context - React) 。
基本上,您應該使用 React Context 在父組件和子組件之間共享 state。 如果子組件想要更改 Theme,您可以從 Context 中獲取setTheme
鈎子並根據需要調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.