我正试图根据传递到组件(props.toothData
(中的道具来设置react中对象(teethData.data
(的状态。如果props传递的对象的长度为零,则设置该对象。如果props.toothData
的长度为零,则为变量givenToothData
提供默认值,使得teethData.data
具有默认值,否则,teethData.data
仅设置为props.toothData
。然而,如果props.ToothData
不是长度为零的,teethData.data
也不会改变我想要的方式
下面是我的代码,有什么建议吗?
function TableArray(props) {
const navigate = useNavigate();
console.log(props.toothData);
var givenToothData = props.toothData;
if (Object.keys(props.toothData).length === 0) {
console.log("this happened", props.toothData);
givenToothData = {
1: {
pp: false,
C14: false,
GI0: false,
GI23: false,
PDI: false,
GR: false,
F13: false,
M03: false,
},
2: {
AB: false,
AT: false,
EH: false,
TI: false,
TLUX: false,
O: false,
GH: false,
OST: false,
ONF: false,
FX: false,
CA: false,
OM: false,
D: false,
DX: false,
},
3: { RTR: false, TR: false, SN: false, TA: false },
4: {
TFXUCF: false,
TFXCCF: false,
TFXUCRF: false,
TNE: false,
TPE: false,
},
}
console.log("this happened", givenToothData);
}
const [teethData, setTeethData] = useState({
tooth: props.tooth,
data: givenToothData
});
console.log(teethData.data, "runthisfirst n", givenToothData, props.teethData);
useState钩子的参数在首次安装组件时只分配一次。在随后的函数执行中,它不会设置该值。尝试使用useEffect设置道具变化时的状态。即CCD_ 10。