在React挂钩中切换对象状态内的值的正确方法是什么?

尼雅斯·纳扎尔(Niyas Nazar)

这是切换按钮的简单代码示例

import React, { useState } from "react";
import "./styles.css";

const initialState = {
  isOpen: true
};

export default function App() {
  const [state, _setState] = useState(initialState);
  const setState = newState =>
    _setState(prevState => ({ ...prevState, ...newState }));

  const toggleButton = () => {
    setState({ isOpen: !state.isOpen });
  };

  return (
    <div className="App">
      <button onClick={toggleButton}>Show</button>
      {state.isOpen && <h1>Hello World</h1>}
    </div>
  );
}

问题

  1. 上面的代码是在对象内切换值的正确方法吗?
  2. 如果将toggleButton函数更改为以下代码,有什么好处statesetState执行不访问对象引用
const toggleButton = () => {
    const { isOpen } = state;
    setState({ isOpen: !isOpen });
};
德鲁·里斯(Drew Reese)

问题

  1. 上面的代码是在对象内切换值的正确方法吗?

也许值得商,,但是切换任何反应状态的正确方法是使用功能状态更新。这是因为可以将多个状态更新放入队列并进行批处理。您希望它们按照排队的顺序进行处理,并以正确的状态结束。

const toggleButton = () => {
  setState(prevState => ({ isOpen: !prevState.isOpen }));
};

以下是我用来演示功能更新为何起作用的演示。

编辑反应-定期和功能状态更新

  1. 如果将toggleButton函数更改为以下代码,会有什么好处?通过在setState执行时不访问状态对象引用。
const toggleButton = () => {
  const { isOpen } = state;
  setState({ isOpen: !isOpen });
};

不,不是真的,它仍然直接访问回调函数范围内包含的当前状态对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过rest api更新按钮后,如何在react挂钩中切换按钮状态?

在Java中切换对象的类型

Redux:在规范化状态树中切换布尔值的最佳方法是什么?

在 Java 中切换对象数组中的最小值和最大值

在传单地图控制图层中切换标记的正确方法是什么?

在React中切换嵌套状态对象

在数组VueJS中切换对象的属性?

如何在Swift Scenekit中切换对象加载?

在SwiftUI中切换视图的最佳方法是什么?

切换对象数组中的 Redux 状态属性

如何正确更新挂钩中的状态

切换到结果`onSubmit`使用React Router在React挂钩中的搜索表单

从React的useState挂钩中更改状态

在javascript中切换点击事件的最佳方法是什么?

在菜单中切换幻灯片的一种干净方法是什么?

ReactTransitionGroup挂钩中的回调是什么?

在 React Hooks 中切换布尔状态

为什么在UseEffect挂钩中设置状态后,我的React状态仍未定义?

更新React挂钩中的嵌套对象

在python中切片unicode字符串的正确方法是什么?

使用键访问状态内部对象的正确方法是什么?

在React挂钩中,如何在要更改的状态下引用对象的通用属性?

为什么react-dnd useDrop挂钩中的回调函数无法更新父组件状态?

取消useEffect挂钩中的所有异步/等待任务以防止反应中发生内存泄漏的正确方法是什么?

react挂钩中的useEffect执行顺序及其内部清理逻辑是什么?

在 React 中设置状态的正确方法是什么

切换对象属性VueJS?

使用 jquery 切换对象的类

什么是正确的语法来更新对象的反应挂钩状态