如何在对象内部拆分数组并推入单独状态?

时间:2020-05-13 09:15:30

标签: reactjs

希望我能在这里解释我要做什么。我使用WordPress作为我的API,并使用CRA获取数据。

控制台记录数据时,我有一个带有2个不同数组的对象。

哪个返回:{consult_business: Array(2), consult_strategy: Array(2)}

我有一个状态:

const [consult, setConsult] = useState({
    consult_business: [],
    consult_strategy: []
});

现在,我要在负载下执行的操作是将这2个数组推入单独的数组中,然后将其推入咨询状态。这样,我将能够基于下拉选择值来映射值。

我想用useEffect来做。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

这是您可以做到的方式:

当您的数据{consult_business: Array(2), consult_strategy: Array(2)}与状态结构匹配时,您可以直接对其进行设置,如下所示

useEffect(() => {

   // first make API call and get details

   setConsult(your_data); // <-- then set those details via this

},[]); //<--- [] means it will execute useEffect only once , as you need on load

您可以通过以下方式访问这些值

consult.consult_business // <--- Will provide first array
consult.consult_strategy // <--- Will provide you second array

如果要加入两个数组,可以执行以下操作:

[...consult.consult_business , ...consult.consult_strategy]

答案 1 :(得分:1)

赋予状态

const [consult, setConsult] = useState({
  consult_business: [],
  consult_strategy: []
});

以及与状态形状完全匹配的响应数据形状(具有相同键和值类型的对象

{consult_business: Array(2), consult_strategy: Array(2)}

模式应该是

useEffect(() => {
  // fetch data
  setConsult(data);
}, []); // <-- empty dependency array to run effect once on component mount
相关问题