Tengo varias cosas en mi mapeo de solidez, quiero devolverlas todas en mi front-end (reaccionar), así que leí varias preguntas aquí en stackoverflow y me di cuenta de que no podemos recorrer ese mapeo, así que lo hice. este:
uint256 public pendingRequestID = 1; mapping(uint256 => Request) public requests; struct Request { uint256 id; address CurrentOwner; uint256 price; string details; string Pictures; } function totalAddPendingRequest() public view returns (uint256) { return pendingRequestID; } function requestToAddProperty(address _CurrentOwner,uint256 _price,string memory _details,string memory _picture ) public { requests[pendingRequestID] = Request( pendingRequestID, _CurrentOwner, _price, _details, _picture ); pendingRequestID++; }
Ahora tengo un ID de solicitud pendiente para repetir y puedo devolver esos valores de mapeo uno por uno... trasero:
Este es mi código de reacción:
const [realEstateContract , setRealEstateContract] = useState({}); const [totalRequestedProperties, setTotalRequestedProperties] = useState(); // tried this as well: // const [totalRequestedProperties, setTotalRequestedProperties] = useState(0); console.log(realEstateContract); useEffect(()=> { const RealEstateContractAddress = '0x8B9a94Cc88D8CEBF1b9D903De5851fAef62b0eB9'; const provider = new ethers.providers.Web3Provider(window.ethereum) const signer = provider.getSigner() const RealEstateContract = new ethers.Contract(RealEstateContractAddress, RealEstateabi, signer); setRealEstateContract(RealEstateContract); pendingIdFunction(); },[]) async function pendingIdFunction() { await realEstateContract && realEstateContract.totalAddPendingRequest().then(r => { setTotalRequestedProperties( BigNumber.from(r._hex).toString()) }) } console.log(totalRequestedProperties);
Ahora este realEstateContract devuelve mi contrato y obtengo que totalRequestedProperties devuelve mi número exacto, pero por alguna razón, mi ciclo no funciona, después de darme cuenta descubrí que este totalRequestedProperties devuelve undefined primero y luego va con mi número, incluso ese realEstateContract devuelve vacío objeto primero y luego va con mis datos de contrato reales, ¿cómo tratarlo en primer lugar?
Así es como lo estoy haciendo:
<div>{totalRequestedProperties}</div> {[...Array(totalRequestedProperties)].map((e, i) => "faroqq" )}
Resultado y consola: simplemente no puedo obtener ese bucle, esas solicitudes totales están bien.