reactjs - React.useState 不会从 props 重新加载状态
问题描述
我希望在道具更改时重新加载状态,但这不起作用,并且user
变量在下次useState
调用时不会更新,有什么问题?
function Avatar(props) {
const [user, setUser] = React.useState({...props.user});
return user.avatar ?
(<img src={user.avatar}/>)
: (<p>Loading...</p>);
}
解决方案
传递给 useState 的参数是初始状态,很像在类组件的构造函数中设置状态,并且不用于在重新渲染时更新状态
如果要更新道具更改的状态,请使用useEffect
钩子
function Avatar(props) {
const [user, setUser] = React.useState({...props.user});
React.useEffect(() => {
setUser(props.user);
}, [props.user])
return user.avatar ?
(<img src={user.avatar}/>)
: (<p>Loading...</p>);
}
推荐阅读
- sharepoint-online - 如何使用 CSOM 关键字查询在 SharePoint Online 中设置用户配置文件属性过滤器
- r - 使用 mapply 时参数不一致
- azure - 发布后,我的 Azure 应用服务在加载时显示“您的应用服务应用已启动并正在运行”,如何删除?
- ansible - 使用 zip 命令时没有这样的文件或目录
- android - 使用 rxjava 对 android 应用程序进行单元测试
- google-bigquery - Getting error while inserting array of json to bigQuery
- python - 如何从熊猫数据框中的列值中删除连续的四位数字
- python - 使用 cx_freez 构建 exe 时出错
- repository - 外部服务 (API) 是否符合存储库的 DDD 定义?
- angular - How to sort array properly?