我正在使用 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:{},
}
请建议我任何其他方式
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: { /* ... */} }