【发布时间】:2021-07-21 19:09:36
【问题描述】:
我制作了一个映射“步数”输入的函数,我想我已经为每个组件提供了唯一的键,但控制台另有说明。为什么是这样? 我在这个项目中遇到的另一个问题是标题字段没有正确更新,但我不知道为什么。这是我的代码。
export default function App() {
//number of steps required
const [numberOfSteps, setNumberOfSteps] = useState(0);
//number of steps to array to map through
const stepsMap = Array.apply(
null,
Array(numberOfSteps).fill({ title: "", body: "" })
);
//steps array to object
let stepsObject = { ...stepsMap };
//updates title text
const updateTileArray = (index, titleEventData) => {
const stepsObjectData = { ...stepsObject };
stepsObject = {
...stepsObjectData,
[index]: { ...stepsObjectData[index], title: titleEventData }
};
};
//updates quill text body
const updateRichTextArray = (index, richTextEventData) => {
const stepsObjectData = { ...stepsObject };
stepsObject = {
...stepsObjectData,
[index]: { ...stepsObjectData[index], body: richTextEventData }
};
};
return (
<div className="App">
<TextField
type="number"
label="Number of steps"
value={numberOfSteps}
InputProps={{ inputProps: { min: 0 } }}
onChange={(e) => setNumberOfSteps(Number(e.target.value))}
/>
{stepsMap.map((_, index) => (
<>
<Typography key={"heading" + index}>Step: {index + 1}</Typography>
<TextField
key={"title" + index}
type="text"
label="Title"
value={stepsObject[index]?.title}
onChange={(titleEventData) =>
updateTileArray(index, titleEventData.target.value)
}
/>
<ReactQuill
key={"quill" + index}
theme="snow"
value={stepsObject[index]?.body}
onChange={(richTextEventData) =>
updateRichTextArray(index, richTextEventData)
}
/>
</>
))}
</div>
);
}
【问题讨论】:
-
这能回答你的问题吗? Can I add a key prop to a React fragment?
-
控制台警告是什么?也许您可以将片段
<>转换为<div>或<React.Fragment>并在其上提供key。 -
谢谢你对我问题的第二部分的任何回答?
标签: javascript arrays json reactjs key