当前位置: 首页 > 知识库问答 >
问题:

使用React useState钩子设置多个状态值

阎卓
2023-03-14

我想用React useState钩子设置多个状态值,这样我就可以用useEffect钩子分别更新它们。我有以下代码:

import React, { useState } from "react";

const initialValues = {
  phone: "",
  email: ""
};

const App = () => {
  const [order, setOrder] = useState("");
  const [paid, setPaid] = useState(false);
  const [submitting, setSubmitting] = useState(false);
  const [loading, setLoading] = useState(false);
  const [data, setData] = useState(initialValues);

  return (
    <div className="App">
    </div>
  );
};

export default App;

但是当我用React DevTools检查应用程序时,我会看到钩子的多个“状态”值,而不是“订单”、“支付”、“提交”等。

共有1个答案

慕铭
2023-03-14

您可以使用USESTATE钩子创建一个状态,并将每个值都像这样放在那里。

import React, { useState } from "react";

const initialValues = {
  phone: "",
  email: ""
};

const App = () => {
  const [state, setState] = useState({
     order:'',
     paid: false,
     submitting: false,
     loading: false,
     data: initialValues
  });
  // example of setting this kind of state
  const sampleChanger = () => {
     setState({...state, paid: true, order: 'sample'});
  }
// etc...
 类似资料:
  • 这两个是等价的吗?如果不是,哪一个是最好的,为什么?

  • 提前谢了。我有一个状态数组,如下所示。 我需要添加一个项目到状态数组,我发现我们不需要做状态突变。如何使用PrevState设置状态。 如何调用set State以追加此状态数组。 像这样的东西?

  • 我想知道在中为定义多个对的最佳方法是什么。 在一个类中,我会初始化

  • 假设我有一个依赖于其他状态的状态(例如,当A改变时,我希望B改变)。 在useEffect钩子中创建一个观察a并设置B的钩子是否合适? 效果是否会层叠,当我单击按钮时,第一个效果会激发,导致b发生变化,导致第二个效果激发,然后再进行下一次渲染?这样构造代码有没有性能方面的缺点?

  • 问题是:我试图通过单击按钮调用两个函数。这两个函数都会更新状态(我正在使用useState钩子)。第一个函数将value1正确更新为“new 1”,但在1s(setTimeout)后,第二个函数启动,它将值2更改为“new 2”,但是!它将值1设置回“1”。为什么会这样?提前谢谢!

  • 当您通过提交表单调用API请求时,如何设置Axios响应?我想从/在POST方法中发送表单,并获得API响应,然后用API响应重定向到/result页面。我的代码在下面,它引发 警告:无法对卸载的组件执行React状态更新。 这是一个no-op,但它表示应用程序中存在内存泄漏。 若要修复,请取消useEffect清理函数中的所有订阅和异步任务。在家(在app.js:21) 完成handleSubm