我需要通过reactjs按照**{publicName}或{pubname}**显示用户的公共名称,但它抛出错误,publicName未定义
下面是我的代码:
import React, { useEffect, useState, Fragment } from "react";
const fetchAccountId = async () => {
const publicName = "Nancy Moore";
return publicName;
};
function App() {
const [accounts] = useState(fetchAccountId);
fetchAccountId();
const [pubname, setPubname] = useState(null);
setPubname(publicName);
useEffect(() => {}, []);
return (
<div>
<h2> Display Public Name</h2>
<div>
{publicName}
OR {pubname}{" "}
</div>
</div>
);
}
export default App;
2条答案
按热度按时间k2fxgqgv1#
由于没有这样的
publicName
定义在scope
中,因此错误。您的代码段中存在以下问题:
1.必须在作用域中定义
publicName
才能访问它。1.不应该直接在组件中的代码中设置状态。它将导致无限的渲染。最好使用
useEffect
并在其中设置状态。以便它仅在需要时设置状态。如果您喜欢使用
async-await
,也可以使用它:CODESANDBOX
3gtaxfhh2#
只需要调整一下,加些零钱
与
如果你在
useEffect()
中使用它会更好。此使用效果函数将在组件加载时触发。
注意:
fetchAccountId()
中的const publicName
不是全局变量,它只存在于fetchAccountId()
函数中。