Я работаю над проектом React, у меня проблема с динамическим c созданием компонента с useState
;
Сначала я получаю адрес данных из Ethereum и по этому адресу в for
l oop получение данных из IPFS, и я хочу сохранить эти данные для использования массива объекта State.
Это функция, которая получает адрес из Ethereum:
patientstorage.deployed().then(function(contractInstance){
contractInstance.getPatientContractAddressByPatientName(usnameByte32).then(function(result){
const PatientContract = new web3.eth.Contract(Patient.abi,result)
PatientContract.methods.getConsultationsIpfsList().call({from: ethereum.selectedAddress}).then(function(result){
console.log("Consul IPFSes:", result)
for(var i=0; i<result.length; i++){
console.log(ethers.utils.toUtf8String(result[i]))
IPFSREADER(result[i]);
}
})
});
})
и это моя функция IPFSREADER
, получение данных из IPFS и установка useState
:
const [consul, setConsul] = useState([])
const [count, setCount] = useState(0);
function IPFSREADER(element){
let convertedIPFSaddress = ethers.utils.toUtf8String(element)
ipfs.cat(convertedIPFSaddress).then(function(result){
console.log('ipfs.cat result:', result)
let cons = result.toString('utf8')
const parsed = JSON.parse(cons);
console.log("cons:",parsed)
setConsul([parsed,...consul])
console.log("cons:",consul)
})
}
consul
- это все мои данные, которые считываются из хранилища IPFS. Когда я печатаю это так:
<Card bg="dark">
<Card.Header>
{consul.date} {consul.time}
</Card.Header>
<Card.Body>
<blockquote className="blockquote mb-0">
<p> Doctor:{consul.doctorName} </p>
<p> Address:{consul.addr} </p>
<p> Disease:{consul.disease} </p>
<p> medicine:{consul.medicine} </p>
<footer className="blockquote-footer">
Someone famous in <cite title="Source Title">Source Title</cite>
</footer>
</blockquote>
</Card.Body>
</Card>;
Теперь, проблема здесь, когда я хочу создать массив объектов useState
, с setConsul([parsed,...consul])
этим кодом в IPFSREADER
он всегда возвращает пустой массив, поэтому я не могу использовать этот useState
для рендеринга компонента Dynami c с map
. Можете ли вы помочь мне, что я могу сделать для создания массива объектов?