如何在Next js中将两个状态的数据组合成第三个状态

问题描述 投票:0回答:1

我正在使用 useState 设置状态我已经收集了两种不同状态(即文本和输入)的数据,现在我想将这两种状态添加到第三种状态(即所有数据)

我已经尝试过了

const [alldata, setAlldata] = useState({})
 const [text, setText] = useState({ catagory: "product", });// there is more than one value
  const [inputs, setInputs] = useState([
    { item: "", quantity: "", rate: "", tax: "" },
  ]);
  setAlldata(
      {
        "text":text,
        "inputs":inputs,
      }
     )
  console.log(alldata)

但它给出了一个空对象 我希望所有数据中的文本和输入应该看起来像

alldata:{
       text:{},
       inputs:{},
}

请建议我任何其他方式

javascript reactjs next.js13
1个回答
0
投票

setState
是异步的,这意味着该值只会反映在下一次渲染上。这是深入探讨这种行为的详细答案

但是,这可能是 XY 问题。如果

alldata
纯粹依赖于其他状态,则首选使用
useMemo
。当任一状态发生突变时,它会自动反映变化。

const [text, setText] = useState({ catagory: "product", });// there is more than one value
const [inputs, setInputs] = useState([
  { item: "", quantity: "", rate: "", tax: "" },
]);

const alldata = useMemo(() => ({ text, inputs }), [text, inputs]);

console.log(alldata); // { text: { /* ... */ }, inputs: { /* ... */} }
© www.soinside.com 2019 - 2024. All rights reserved.