我正在尝试实现一个按钮来在明暗之间切换。我有一个文件批准器,看起来像这样。。
const theme = getTheme(true);
const AppRouter = () => {
return (
<MuiThemeProvider theme={theme}>
<ThemeProvider theme={theme}>
...
<Switch> *all my routes are here including AppRoot, which routes to components* </Switch>
</MuiThemeProvider></ThemeProvider>
);
}
所以当我设置getTheme(true)时,它会触发黑暗主题,而getTheme(false)会触发光明主题。问题来了,我想在Switch
中的一个组件中插入一个切换按钮,允许用户在这两个主题之间切换。本质上,组件将控制AppRouter的状态。可能吗?
你知道我从哪里开始吗?我正在使用react钩子和类型脚本。我试过各种方法,但都没有用。减速器能工作吗?
更新:
认可者。tsx
const [lightTheme, setLightTheme] = React.useState(true);
const theme = getTheme(lightTheme);
const AppRouter = () => {
return (
<MuiThemeProvider theme={theme}>
<ThemeProvider theme={theme}>
...
<Switch>
<PrivateRoute path="..." component={AppRoot} render{()=> <PageTitle toggleTheme={() => toggleTheme}/>}
</Switch>
</MuiThemeProvider></ThemeProvider>
);
}
PageTitle.tsx
interface PageTitleProps {
...
toggleTheme?: () => void;
}
const PageTitle: React.FC<PageTitleProps> = ({ ... toggleTheme}) => {
...
return (
...
{toggleTheme && <Button OnClick={() => toggleTheme()}>Change Theme</Button>
)}
我试过运行上面的代码,但是toggleTheme没有定义,所以按钮根本没有显示出来。toggleTheme必须是可选的。
在App路由器中创建一个本地状态,并将切换器传递给将切换主题的组件。
认可者。tsx:
import React, { useState } from 'react';
const AppRouter = () => {
const [lightTheme, setLightTheme] = useState(true);
const theme = getTheme(lightTheme);
const toggleTheme = () => setLightTheme(!lightTheme);
return (
<MuiThemeProvider theme={theme}>
<ThemeProvider theme={theme}>
...
<Switch>
<Route path='your-path' render={(props) =>
<PageTitle toggleTheme={ toggleTheme } />} />
</Switch>
</MuiThemeProvider></ThemeProvider>
);
}
页面标题。tsx:
interface PageTitleProps {
...
toggleTheme?: () => void;
}
const PageTitle: React.FC<PageTitleProps> = ({ ... toggleTheme}) => {
...
return (
...
<button onClick={() => toggleTheme()}>Change Theme</button>
)}
问题内容: 我在有菜单按钮的项目中使用react。 还有一个Sidenav组件,例如: 我编写了以下代码来切换菜单: 事实是,这不是DOM元素,我无法在他上添加类。 有人可以向我解释如何像在按钮上一样在组件上切换类吗? 问题答案: 如果您想让React正确高效地渲染DOM,则必须使用组件的State来更新组件参数,例如Class Name。 更新:我更新了示例,以在单击按钮时切换Sidemenu。
我尝试了不同的方法。但是不要尝试切换这个css类。当我点击它时,书签应该会变成蓝色。到目前为止,我可以用onClick更改为false,但它不会切换回来。 这是ToggleBookmark组件集:
我有以下Redis/Sentinel配置: Redis主服务器+从服务器 监视的哨兵,名为 客户端应用程序查询,然后查询和修改 现在,假设过时了,我想用一个名为的新Redis master来替换它(停机时间/数据丢失最少)。在手术的最后,我想要这样: Redis主服务器+从服务器 客户端应用程序查询和修改 我可以这样做: 让哨兵开始监视,名为 让的每个从属都成为的从属 从那以后,我被困住了,因为客
问题内容: 我有一个应用程序,允许用户选择一个选项,并根据用户选择从组件中删除一个JPanel,添加新的JPanel并重新验证该组件 看到代码: c是一个组件 我有几个JPanels,用户可以在它们之间切换,并且开关可以正常工作。但是,当我根据用户选择添加此JPanel时,以后添加的JPanels无法正确加载。是什么原因造成的? } 问题答案: 更好的方法是转向CardLayout。但是如果您想坚
问题内容: 在和之间切换的最有效方法是什么? 问题答案: 使用NOT的解决方案 如果值是布尔值,最快的方法是使用 not 运算符: 用减法求解 如果值是数字,则从总数中减去是切换值的一种简单快捷的方法: 使用XOR的解决方案 如果值在 0 和 1 之间切换,则可以使用按位异或: 该技术可以推广到任意一对整数。异或一步被替换为预异常数: (此想法由Nick Coghlan提交,后来由@zxxc推广。
相当绿色关于javas组件的东西等,所以请原谅我,如果我提供的信息是不够的! 请参阅以下代码。在框架中添加菜单和菜单显示,没有问题。我想知道何时调用gameOn()来删除菜单,而不是启动游戏。下面的代码仅使框架表面为“空白”,未添加游戏面板。 对如何修复它有何想法/建议?菜单面板上有一个鼠标听筒。