javascript - 在 firebase 的反应组件中显示用户名
问题描述
我试图将来自firebase的用户名显示为排序名称标签,以通过搜索用户的uid来显示用户登录的内容。我被阅读并说组件中不应该有异步,所以我厌倦了使用以下代码。但是它似乎没有更新,它在日志中正确显示了名称,但可能来自错误的类型。有谁知道这是什么问题?这种方法是否正确?
class ShowUsername extends Component {
constructor(props) {
super(props);
this.state = { username: "" };
}
async componentDidMount() {
this.setState({ message: "loading..." });
const snapshot = await firestore
.collection("username")
.where("uid", "==", "EwE8qBqjDhNaceqdFEqdxD5X9zu1")
.get();
const doc = snapshot.docs.map((doc) => doc.data());
const username = doc[0].username;
console.log(username);
this.setState({ message: username });
}
render() {
let { username } = this.state;
return <div>{username}</div>;
}
}
解决方案
试试这个代码:
class ShowUsername extends Component {
constructor(props) {
super(props);
this.state = { username: "" };
}
async componentDidMount() {
this.setState({ message: "loading..." });
const snapshot = await firestore
.collection("username")
.where("uid", "==", "EwE8qBqjDhNaceqdFEqdxD5X9zu1")
.get();
const doc = snapshot.docs.map((doc) => doc.data());
const username = doc[0].username;
console.log(username);
this.setState({ username: username });
}
render() {
let { username } = this.state;
return <div>{username}</div>;
}
}
您应该更新名为 的状态username
,没有调用状态,message
并且您正在更新该message
状态,这就是为什么实际状态username
从未更新的原因,因此替换message
为username
help 并且现在username
状态正在正确更新。我建议使用 firebase 监听器来更新用户信息。
推荐阅读
- nginx - 仅使用 dnsmasq 和 nginx 重定向某些路径
- mysql - Laradock 无法访问 root@localhost
- python-3.x - 打开后如何阻止.py文件关闭?使用python 3.9?
- sql - 使用 SQL 进行多关键字搜索
- javascript - Angular Karma - 组件未定义
- ios - Xcode 调试器在文件上启用
- python - 当秒数为 0 时,每 15 分钟运行一次 python 程序
- css - 带有宽表和水平滚动条的 Bootstrap4
- postgresql - 在插入原始表时聚合数据
- r - 根据R中的离散标签集标记散点(带滑块)