我正在使用map创建一个动态呈现的表单,并将所有的值更新到字典中。但是,一旦更新了这些值,我就将它们存储到Firebase中,当我提交表单时,我需要将存储的内容显示为输入默认值。
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}`);
}<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就不能工作了。

到底怎么回事?或者我该换什么?
发布于 2022-11-08 13:52:47
因为不能更新defaultValue。
用值代替
value={
userData[partido["partido"]].local[
partido["HomeTeam"]
]
}https://stackoverflow.com/questions/74361853
复制相似问题