【发布时间】:2022-08-23 18:21:20
【问题描述】:
我在我的项目中使用下一个 js,当我创建一个按钮来更改颜色时,它们只会更改基本 Web 组件的颜色而不是背景颜色。
_app.tsx
import \'../styles/globals.css\';
import type { AppProps } from \'next/app\';
import { Provider as StyletronProvider } from \'styletron-react\';
import { LightTheme, BaseProvider, ThemeProvider, DarkTheme } from \'baseui\';
import { styletron } from \'../helpers/styletron\';
import { useState } from \'react\';
const THEME = {
light: \'light\',
dark: \'dark\',
};
function MyApp({ Component, pageProps }: AppProps) {
const [theme, setTheme] = useState(THEME.light);
return (
<StyletronProvider value={styletron}>
<BaseProvider
theme={theme === THEME.light ? LightTheme : DarkTheme}
>
<Component
{...pageProps}
THEMES={THEME}
theme={theme}
settheme={setTheme}
/>
</BaseProvider>
</StyletronProvider>
);
}
export default MyApp;
索引.tsx
import type { NextPage } from \'next\';
import Navbar from \'../components/Navbar\';
interface props {
THEMES: {
light: string;
dark: string;
};
settheme: any;
theme: any;
}
const Home: NextPage<props> = ({ THEMES, settheme, theme }) => {
return (
<>
<Navbar />
<button
onClick={() =>
settheme(theme === THEMES.dark ? THEMES.light : THEMES.dark)
}
>
change
</button>
</>
);
};
export default Home;
当我单击按钮时,它不会将背景颜色更改为黑色
就像你在上面看到的那样不改变背景
-
尝试在 MyApp 组件中添加
console.log(theme),查看状态是否正在更新 -
它正在改变我不知道问题是什么
标签: javascript reactjs next.js baseweb