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 - Fatal编程技术网

Javascript 向状态添加数据

Javascript 向状态添加数据,javascript,reactjs,Javascript,Reactjs,我从另一个文件导入了collections变量,现在正试图将其添加到我的状态。这是怎么回事 未捕获错误:对象作为React子对象无效(找到:具有键{id,name,masterAssetId,tags}的对象)。如果要呈现子对象集合,请改用数组。 在p中(在App.js:17) 未捕获错误:对象作为React子对象无效(找到:具有键{id,name,masterAssetId,tags}的对象)。如果要呈现子对象集合,请改用数组。 在p中(在App.js:17) 在div中(在App.js:

我从另一个文件导入了collections变量,现在正试图将其添加到我的状态。这是怎么回事


未捕获错误:对象作为React子对象无效(找到:具有键{id,name,masterAssetId,tags}的对象)。如果要呈现子对象集合,请改用数组。 在p中(在App.js:17)


未捕获错误:对象作为React子对象无效(找到:具有键{id,name,masterAssetId,tags}的对象)。如果要呈现子对象集合,请改用数组。 在p中(在App.js:17) 在div中(在App.js:16中)


App.js

import React from 'react';
import './App.css';
import {collections} from "./data.js"

class App extends React.Component {
    constructor() {
        super()

        this.state = {
           collectionsarr: collections
        }
    }
  
  render(){
  return (
          <div className="App">
            <p>{this.state.collectionsarr[0]}</p>

            <h1>Charles</h1>

            {/* <h1>{collections[0].name}</h1> */}
          </div>
        )
  }
}

export default App
const collections = [
    {
        id: 1,
        name: "The Simpsons",
        masterAssetId: 13,
        tags: {
            name: "Cartoon",
            subTag: {
                name: "Simpsons family",
                subTag: {
                    name: "2014",
                },
            },
        },
    },
    {
        id: 2,
        name: "Super heroes",
        masterAssetId: 24,
        tags: {
            name: "DC Super heroes",
            subTag: {
                name: "2014",
            },
        },
    },
    {
        id: 3,
        name: "Toy story",
        masterAssetId: 31,
        tags: {
            name: "Disney",
            subTag: {
                name: "Pixar",
                subTag: {
                    name: "Original movie",
                    subTag: {
                        name: "2010",
                    },
                },
            },
        },
    },
    {
        id: 4,
        name: "Ninjago",
        masterAssetId: 42,
        tags: {
            name: "Ninja",
            subTag: {
                name: "Secret Ninja Force",
                subTag: {
                    name: "2017",
                },
            },
        },
    },
];

const assets = [
    {
        id: 11,
        name: "Homer Simpson",
        path: "Homer.jpg",
        collectionId: 1,
    },
    {
        id: 12,
        name: "Lisa Simpson",
        path: "Lisa.jpg",
        collectionId: 1,
    },
    {
        id: 13,
        name: "Bart Simpson",
        path: "Bart.jpg",
        collectionId: 1,
    },
    {
        id: 14,
        name: "Marge Simpson",
        path: "Marge.jpg",
        collectionId: 1,
    },
    {
        id: 15,
        name: "Grampa Simpson",
        path: "Grampa.jpg",
        collectionId: 1,
    },
    {
        id: 16,
        name: "Maggie Simpson",
        path: "Maggie.jpg",
        collectionId: 1,
    },
    {
        id: 21,
        name: "Green Lantern",
        path: "Green lantern.jpg",
        collectionId: 2,
    },
    {
        id: 22,
        name: "Flash",
        path: "Flash.jpg",
        collectionId: 2,
    },
    {
        id: 23,
        name: "Batman",
        path: "Batman.jpg",
        collectionId: 2,
    },
    {
        id: 24,
        name: "Superman",
        path: "Superman.jpg",
        collectionId: 2,
    },
    {
        id: 31,
        name: "Buzz Lightyear",
        path: "Buzz.jpg",
        collectionId: 3,
    },
    {
        id: 32,
        name: "Alien",
        path: "Alien.jpg",
        collectionId: 3,
    },
    {
        id: 41,
        name: "Spinjitzu training Nya",
        path: "Nya.jpg",
        collectionId: 4,
    },
    {
        id: 42,
        name: "Master Wu",
        path: "Wu.jpg",
        collectionId: 4,
    },
    {
        id: 43,
        name: "Lloyd",
        path: "Lloyd.jpg",
        collectionId: 4,
    },
];

export const getCollectionsAsync = () => {
    return new Promise((resolve) => setTimeout(() => resolve(collections), 1000));
};

export const getAssetByIdAsync = (assetId) => {
    const asset = assets.find((a) => a.id === assetId);

    if (!asset) {
        throw new Error("Asset not found" + assetId);
    }

    return new Promise((resolve) => setTimeout(() => resolve(asset), 500));
};

export const getAssetsByCollectionAsync = (collectionId) => {
    const collectionAssets = assets.filter((asset) => asset.collectionId === collectionId);

    return new Promise((resolve) => setTimeout(() => resolve(collectionAssets), 1000));
};

export {collections}

问题在于这条线

<p>{this.state.collectionsarr[0]}</p>

您需要通过
collectionsarr
映射
,并写入每个对象的collectionsarr名称

返回(
{this.state.collectionsarr.map((collection)=>(
{collection.name}

))} 查尔斯 ) }
我觉得这个代码不错。你在使用它时遇到了什么问题?@richytong:我添加了错误扫描you share data.js?在问题中添加了data.js,你想在标签内打印什么?
<p>{JSON.stringify(this.state.collectionsarr[0])}</p>