You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用React和Firebase如何将两个输入框数据分别渲染到不同元素

问题原因

你在从Firestore拉取待办数据的环节,没有将存入的title字段读取到本地的todos状态数组中,所以即使数据已经成功写入数据库,渲染时也拿不到标题值。

修复步骤

  1. 修改AddLink.js中useEffect内的快照处理逻辑,新增读取title字段的代码:
useEffect(() => {
  db.collection("links")
    .orderBy("timestamp", "desc")
    .onSnapshot((snapshot) => {
      setTodos(
        snapshot.docs.map((doc) => ({
          id: doc.id,
          todo: doc.data().todo,
          title: doc.data().title, // 新增此行,将数据库中的title字段存入本地状态
        }))
      );
    });
}, []);
  1. 清理AddLink.js中addTodo函数下方多余的/字符,避免语法报错。

可选优化

你当前渲染Todo组件时同时传递了todo对象和单独的title属性,但Todo组件内部是从props.todo.title取值,所以可以删掉多余的title={todo.title}属性传递,代码更简洁:

{todos.map((todo) => (
  <Todo todo={todo} key={todo.id} />
))}

内容的提问来源于stack exchange,提问作者Mahier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:27:01