Reactjs 如何在react中重新排序动态输入?

Reactjs 如何在react中重新排序动态输入?,reactjs,input,dynamic,Reactjs,Input,Dynamic,我是个新手,到目前为止,我只学会了用钩子编码 我做了动态输入,用户可以添加任意多的输入。 我想允许用户重新排列输入的顺序 我尝试了一些代码(见下文),但最终以警告告终 警告:组件正在将受控输入更改为非受控输入 如何重新排列输入的顺序 const Questions=({questionsData,setQuestionsData,title,id})=>{ 控制台日志(问题数据); const handleSave=async()=>{ 如果(id){ 试一试{ const response=

我是个新手,到目前为止,我只学会了用钩子编码

我做了动态输入,用户可以添加任意多的输入。 我想允许用户重新排列输入的顺序

我尝试了一些代码(见下文),但最终以警告告终

警告:组件正在将受控输入更改为非受控输入

如何重新排列输入的顺序

const Questions=({questionsData,setQuestionsData,title,id})=>{
控制台日志(问题数据);
const handleSave=async()=>{
如果(id){
试一试{
const response=等待axios.post(“http://localhost:3001/update", {
id:id,
标题:标题,,
问题:问题数据,
});
警报(响应数据);
}捕获(错误){
console.log(错误消息);
}
}如果(!id&&title!==“”),则为else{
试一试{
const response=等待axios.post(“http://localhost:3001/create", {
标题:标题,,
问题:问题数据,
});
警报(响应、数据、消息);
}捕获(错误){
console.log(错误消息);
}
}否则{
警觉(“公式化”是指没有滴度的);
}
};
返回(
{questionsData.map((问题,索引)=>{
返回(
{question.type===“texte”?“1”:“2”}
{
let tab=[…问题数据];
选项卡[索引].title=event.target.value;
选项卡[索引]。索引=索引;
设置问题数据(选项卡);
}}
>
{
let tab=[…问题数据];
设项目=选项卡拼接(索引,1);
接头(索引+1,0,项目);
设置问题数据(选项卡);
}}
/>
{
let tab=[…问题数据];
接头(索引,1);
设置问题数据(选项卡);
}}
/>
);
})}
{
let tab=[…问题数据];
tab.push({类型:“texte”,标题:,索引:});
设置问题数据(选项卡);
}}
>
问题“文本”

{ let tab=[…问题数据]; tab.push({类型:“note”,标题:,索引:}); 设置问题数据(选项卡); }} > 问题“注意”

索维加德 ); }; 导出默认问题;
您的上移逻辑将添加到索引中,该索引应为
索引-1
,如果
索引+1
小于或等于
问题,请确保检查数组边界。长度
索引-1
大于
0
。我在沙箱中修复了上移问题。检查下面


是的,很抱歉,我在粘贴代码后更改了上移。我只是忘记了在我的onclick中上下移动以将[0]添加到项目中。我写了tab.splice(索引+1,0,项);代替制表拼接(索引+1,0,项目[0]);现在它工作得很好。非常感谢你的帮助@如果答案正确,Florianstett将其标记为认可答案。