0
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 限制了渲染的数量以防止无限循环。

如何使此代码按预期工作?

4

0 回答 0