Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法将状态设置为映射函数内的对象数组_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript 无法将状态设置为映射函数内的对象数组

Javascript 无法将状态设置为映射函数内的对象数组,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我从wordpressapi获取数据,然后在map函数中构造数据。我无法将状态设置为映射函数I中的对象数组 获取不同对象的数组或不同对象的对象,但不获取单个对象 对象数组 const rsp = response.data; const map = rsp && rsp.map(item => { let struct = {}; let data = []; const id = item.id; const title = it

我从wordpressapi获取数据,然后在map函数中构造数据。我无法将状态设置为映射函数I中的对象数组 获取不同对象的数组或不同对象的对象,但不获取单个对象 对象数组

  const rsp = response.data;

  const map = rsp && rsp.map(item => {
    let struct = {};
    let data = [];
    const id = item.id;
    const title = item.title['rendered'];
    const image = item['_embedded']['wp:featuredmedia'][0].source_url;
    const banner = item.ACF.banner_image.url;
    const products = item.ACF.celebrity_products;


    let store={
      id:id,
      title:title,
      image:image,
      banner:banner,
      products:products
    };


    setRes(prevState => {

      // struct['data'] =store;
      // data.push(store);
      return{ ...prevState,
      id: store.id,
      name: store.title,
      uri: store.image,
      banner: store.banner,
      products: store.products


  }})

  });

我想你会想要更多像这样的东西:

const [items, setItems] = useState([])

rsp && setItems(rsp.map(item => ({
  id: item.id,
  name: item.title['rendered'],
  uri: item['_embedded']['wp:featuredmedia'][0].source_url,
  banner: item.ACF.banner_image.url,
  products: item.ACF.celebrity_products
})))

我认为您没有提供代码的完整故事。但我想我们可以帮忙

如果您希望将处理结果作为一个数组放在map变量中,那么您应该在它内部返回类似的内容

让oddNumber=[1,3,5];
const map=oddNumber.map(oneOddNumber=>{return oneOddNumber*2;});
//现在地图是[2,6,10]
或者,如果您打算使用
setRes
函数保存所需的数组,那么您应该执行以下操作

setRes(prevState=>({
…国家,
theResultArray:[…prevState.theResultArray,{id:store.id,…}]
}))
现在您有了属性名
theResultArray
,这是您迭代过的对象数组


希望您能提供更完整的代码,以便下次帮助更清晰:D

我很困惑
setRes
突变方法是否在
useState
上?你在每次迭代中都调用它?这不是个好主意。。另外,如果我现在理解了这一点,那么您试图将状态设置为数组,但在每次迭代中使用单个对象覆盖状态。解决方案迭代后使用
setRes
。是的,但迭代后我无法将其设置为状态,因为map函数不返回任何内容。我做了相同的事情,它将返回不同对象的不同数组,但我想要一个对象数组。如果您能提供完整的代码,我们希望能够提供更多帮助。