reactjs - Material UI Switch 切换有错误,无法正确更改

标签 reactjs material-ui

我创建了一个简单的 React 项目,我在应用程序的抽屉中插入了一个 Material UI 开关,用于将应用程序的主题从深色切换为浅色。问题是有时当我加载应用程序并单击开关时,前几次它没有响应。当我继续单击时,它会更改主题,但行为会发生翻转:我进行切换的方式是在黑暗模式下检查/打开开关,在亮灯时关闭开关,但是现在,在没有响应之后前几次,它会改变行为,当它处于灯光模式时它会打开,反之亦然。

我切换开关的方式是这样的:

声明我使用了:

  const [isDark, setDarkMode] = React.useState(true);
  const [theme, setTheme] = React.useState(darkTheme);

切换主题功能:

const toggleTheme = () => {
    setDarkMode((prev) => !prev);
    setTheme(isDark ? darkTheme : lightTheme);
  };

这是我的开关:

<Switch edge="start" checked={isDark} onChange={toggleTheme} />

编辑:如果我改为这样做,这个问题仍然存在:

setTheme((prev) => prev === darkTheme? lightTheme: darkTheme);

结果:(行为仍然翻转)

enter image description here

代码:

enter image description here

我的 CodeSandbox 链接:https://codesandbox.io/s/testing-karmapact-app-bghgp?file=/App.js

最佳答案

您需要反转主题切换 setTheme(isDark ? darkTheme : lightTheme);

如果当前是深色主题,那么你想将它们设置为浅色,反之亦然。

const toggleTheme = () => {
  setDarkMode((prev) => !prev);
  setTheme(isDark ? lightTheme : darkTheme);
};

关于reactjs - Material UI Switch 切换有错误,无法正确更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64074432/

相关文章:

javascript - react : How to Show Message if there is no records

html - 底部固定 div 被 android 键盘推高

新 fragment/Activity 上的 Android 汉堡包箭头过渡

reactjs - React Native - 动画功能组件

javascript - 尝试在 React 中从父级调用子级方法时遇到困难,子级是 AntD 表单组件

javascript - react 高阶组件 : making assumptions about wrapped components

reactjs - 如何更改 material-ui-pickers 时间选择器时区?

reactjs - 是否可以在 div 上使用 MUI 的触摸波纹效果?

reactjs - Material-ui SSR Remix 示例导致样式在水化后被复制,我应该删除它们吗?

reactjs - 如何覆盖 Material-UI 隐藏组件的样式?