首页 > 解决方案 > 无法从存储在 Firebase 中的字符串中删除最后一个字符

问题描述

我正在使用 firebase 实时更新我的​​字符串值。例如,当我GoogleTitle输入框中输入内容时,firebase 会将其存储为:

Firebase 如何存储字符串的屏幕截图

现在,当我尝试通过删除输入字段中的所有字符来更新输入值时,除了第一个字符之外,所有字符都将被删除G

好像firebase不会让我删除所有字符然后让我存储和空字符串。任何想法为什么?

// set title
  useEffect(() => {
    if (linkTitleEdit) {
      db.collection("users").doc(user?.uid).collection("links").doc(id).update({
        linkTitle: linkTitleEdit,
      });
    }
  }, [linkTitleEdit]);

这是我呈现的输入:

<div className="link__title">
                <input
                  type="text"
                  placeholder={
                    linkTitle == "Enter Title" ? linkTitle : "Enter Title"
                  }
                  onChange={(e) => setLinkTitleEdit(e.target.value)}
                  value={linkTitle == "Enter Title" ? linkTitleEdit : linkTitle}
                />
              </div>

标签: javascriptreactjsfirebasegoogle-cloud-firestore

解决方案


我怀疑它落后于一个更改,因此何时删除它显示“G”,因为它是您删除的最后一个字符。与其使用 useEffect 和 linkTitleEdit 作为依赖项,不如尝试在您的输入中直接更新 firestore onChange。去掉使用效果代码,试试下面这个:

    <div className="link__title">
                    <input
                      type="text"
                      placeholder={
                        linkTitle == "Enter Title" ? linkTitle : "Enter Title"
                      }
                      onChange={(e) => 

 db.collection("users").doc(user?.uid).collection("links").doc(id).update({
        linkTitle: e.target.value,
      });
}
                      value={linkTitle == "Enter Title" ? linkTitleEdit : linkTitle}
                    />
                  </div>

我必须查看更多上下文才能确定,但​​我怀疑这会解决它。


推荐阅读