import useState from "react-usestateref";
const [meta, setMeta, metaRef] = useState({});
内部组件的 JSX:
data.result.map((token) => {
const id = token.token_id;
const params = { uri: token.token_uri };
if (token.metadata) {
setMeta(JSON.parse(token.metadata));
} else {
Moralis.Cloud.run("get_token_uri", params).then(
(response) => setMeta(response)
);
}
const { name, description, imageUrl } = metaRef.current;
return (
<Card
key={id}
tokenId={id}
name={name}
description={description}
user_address={user_address}
imageUrl={fixURL(imageUrl)}
calledFrom={calledFrom}
/>
);
})
我想从 data.result.map 内部更新元状态变量,并使用更新后的元对象返回一个 Card 组件。我正在使用 react-usestateref 来获取元状态变量的当前值。否则,元在解构时仍然保留 {},即使在更新后也是如此。如果 token.metadata 不为 null,我想将元状态 var 设置为 token.metadata obj,如果它为 null,我想发出异步请求以从 Moralis 取回对象,然后将其设置为元状态 var。此代码产生以下错误:未捕获的错误:重新渲染过多。React 限制了渲染的数量以防止无限循环。
如何使此代码按预期工作?