繁体   English   中英

如何更改反应钩子中的 object 值?

[英]how to change object value in react hooks?

我有一个 state 和 object {mode: 'light'} 当 handleChange 我点击 setMode 到 {mode: 'dark'} 再次点击 handleChange 时它应该返回到 {mode: 'light'} 流程是一样的切换挂钩,但使用 object,我尝试了几次,但没有成功,我该怎么做?

这是我的 state 模式

 const [mode, setMode] = useState({
    mode: 'LIGHT'
  })

这是我的活动

const handleChangeTheme = (e) => {
    setMode({
      ...mode,
      mode: 'DARK'
    })
  }

我将 state 扔到另一个组件以显示 state

<Navbar handleChangeTheme={handleChangeTheme} mode={mode.mode} />

这个组件导航栏

 <li onClick={handleChangeTheme}>
    <span className='nav-item nav-link'>
        <b>{checked}</b>
     </span>
  </li>

单击 handleChange 时,它应该看起来像 true 或 false 但这是 object

你可以像下面那样做。 State 更改将反映 object 分配为新的

const handleChangeTheme = (e) => {
  let newMode = Object.assign({}, mode);
  newMode.mode = mode.mode === "LIGHT" ? "DARK" : "LIGHT";
  setMode(newMode);
};

您实际上并没有切换模式,请尝试使用功能更新

const toggleMode = () =>
  setMode((prev) => ({ ...prev, mode: !prev.mode }));

<li onClick={toggleMode}>...</li>;

如果将 state 更改为boolean它将简化。

const [mode, setMode] = useState(true);

<Navbar
  handleChangeTheme={() => setMode(!mode)}
  mode={mode ? "LIGHT" : "DARK"}
/>;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM