首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法用onChange React.js Firebase更新React.js

无法用onChange React.js Firebase更新React.js
EN

Stack Overflow用户
提问于 2022-11-08 13:50:54
回答 1查看 14关注 0票数 0

我正在使用map创建一个动态呈现的表单,并将所有的值更新到字典中。但是,一旦更新了这些值,我就将它们存储到Firebase中,当我提交表单时,我需要将存储的内容显示为输入默认值。

代码语言:javascript
复制
  const [local, setLocal] = useState([]);
  const [visitante, setVisitante] = useState([]);

 const handleChangeLocal = (e, i) => {
    const { value, name } = e.target;

    const newState = [...local];
    newState[i] = {
      ...newState[i],
      [name]: value,
    };
    setLocal(newState);
  };

  const handleChangeVisitante = (e, i) => {
    const { value, name } = e.target;

    const newState = [...visitante];
    newState[i] = {
      ...newState[i],
      [name]: value,
    };

    setVisitante(newState);
  };



// FIREBASE

const resultados = {};

  for (let i = 1; i < local.length; i++) {
    resultados[i] = { local: local[i], visitante: visitante[i] };
  }

  async function saveResults() {
    const decodedToken = await firebase.auth().currentUser?.getIdTokenResult();
    const uid = decodedToken?.claims?.user_id;
    const db = firebase.firestore();

    const quiniela = db
      .collection("users")
      .doc(uid)
      .collection("pool")
      .doc("results");

    quiniela.set({
      resultados: resultados,
    });
    router.push(`/quiniela/${uid}`);
  }
代码语言:javascript
复制
<input
                          id={i}
                          type="number"
                          defaultValue={
                            userData[partido["partido"]].local[
                              partido["HomeTeam"]
                            ]
                          }
                          className="w-12 border -ml-8 text-center"
                          placeholder="#"
                          name={partido["HomeTeam"]}
                          required
                          step={1}
                          min={0}
                          max={20}
                          onChange={(e) =>
                            handleChangeLocal(e, partido["partido"])
                          }
                        />

 <input
                          id={i}
                          type="number"
                          className="w-12 border ml-20  text-center"
                          placeholder="#"
                          defaultValue={
                            userData[partido["partido"]].visitante[
                              partido["AwayTeam"]
                            ]
                          }
                          name={partido["AwayTeam"]}
                          step={1}
                          min={0}
                          max={20}
                          onChange={(e) =>
                            handleChangeVisitante(e, partido["partido"])
                          }
                          required
                        />

当我第一次提交数据时,它可以工作,但是,一旦我从Firebase设置了defaultValues,defaultValues就不能工作了。

到底怎么回事?或者我该换什么?

EN

回答 1

Stack Overflow用户

发布于 2022-11-08 13:52:47

因为不能更新defaultValue。

用值代替

代码语言:javascript
复制
value={
  userData[partido["partido"]].local[
    partido["HomeTeam"]
  ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74361853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档