I am developing a webapp using ethereum blochchain and ReactJS. In a page, inside componentDidMount() I collect data from blockchain and add it to an array named requests
typeof(requests) : object console.log(requests) :(2) [Result, Result] 0: Result 0: "Title" 1: "100000000000000" 2: "0xbA439F3C91bF0732e5546721A09be207f69555ca" 3: false 4: "0" approvalCount: "0" complete: false description: "Title" recipient: "0xbA439F3C91bF0732e5546721A09be207f69555ca" value: "100000000000000" __proto__: Object 1: Result 0: "New Request" 1: "4000000000000000000" 2: "0x8104Ce1f3d731A5C39501fddDdc14E2673555555" 3: false 4: "0" approvalCount: "0" complete: false description: "New Request" recipient: "0x8104Ce1f3d731A5C39501fddDdc14E2673555555" value: "4000000000000000000" __proto__: Object length: 2 __proto__: Array(0)
I tried to render components based on the elements of the requests using following code :
<body> {this.state.requests.map((request, index) => { return ( <RequestRow key={index} id={index} address={this.state.address} request={request} approversCount={this.state.approversCount} /> ); })} </body>
But this error occurs
Error: Objects are not valid as a React child (found: object with keys {id, address, request, approversCount}). If you meant to render a collection of children, use an array instead.
How to fix this?
RequestRow is not complete
It’s implemented as
import React from "react"; const requestRow = (props) => <div>{props}</div>; export default requestRow;
Advertisement
Answer
You dont need to write the code for empty array condition. You just need to write,
<body> { this.state.requests.map((request, index) => { return ( <RequestRow key = { index } id = { index } address = { this.state.address } request = { request } approversCount = { this.state.approversCount } /> ); }); }</body>