首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有本地存储的状态不适用于保存主题

具有本地存储的状态不适用于保存主题
EN

Stack Overflow用户
提问于 2021-07-29 09:29:24
回答 1查看 47关注 0票数 0

我正在尝试添加主题切换器在我的网站上使用localStorage,状态和效果的暗/光模式的反应。它就是不起作用,我找不到错误的逻辑(从我的观点来看),我不知道该怎么做,这是senario:

这是我的逻辑:

代码语言:javascript
复制
  useEffect(() => {
    if (localStorage.getItem('theme') === null) {
      localStorage.setItem('theme', 'lightmode');
      setTheme('lightmode');
    }
    else if (localStorage.getItem('theme') === 'lightmode') {
      setTheme('lightmode')
    }
    else if (localStorage.getItem('theme') === 'darkmode') {
      setTheme('darkmode')
    }
  }, [])

  function change_theme() {
    if (theme === 'lightmode') {
      setTheme('lightmode')
      localStorage.setItem('theme', 'lightmode');
      document.body.classList.remove("darkmode");
      document.body.classList.add("lightmode");
    } else {
      setTheme('darkmode')
      localStorage.setItem('theme', 'darkmode');
      document.body.classList.remove("lightmode");
      document.body.classList.add("darkmode");
    };
  }

下面是我的JSX:

代码语言:javascript
复制
{
 theme === 'lightmode' ?
   <button onClick={() => change_theme()}>Change Mode</button>
    :
   <button onClick={() => change_theme()}>Change Mode</button>
}
EN

回答 1

Stack Overflow用户

发布于 2021-07-29 17:42:59

在change_theme()函数中,您设置的主题与已经设置的主题相同。

解决方案:

代码语言:javascript
复制
  function change_theme() {
    if (theme === 'darkmode') { // <--- this was the mistake
      setTheme('lightmode')
      localStorage.setItem('theme', 'lightmode');
      document.body.classList.remove("darkmode");
      document.body.classList.add("lightmode");
    } else {
      setTheme('darkmode')
      localStorage.setItem('theme', 'darkmode');
      document.body.classList.remove("lightmode");
      document.body.classList.add("darkmode");
    };
  }

你只需要一个按钮。不需要terniery语句,因为change_theme()函数已经检查了主题。

代码语言:javascript
复制
<button onClick={change_theme}>Change Mode</button>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68573456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档