Ну, я сделал это, но я думаю, что способ, которым я пользуюсь, не является хорошей практикой.Сначала я сделал исправление для массива, который я установил в качестве начального значения, потому что до того, как мне было присвоено значение массива contentForm, когда я вносил в них изменения, он устанавливал изменения повсюду в состоянии объекта.
langulageform =[
{key:"Ar",lang:"Arabic",contentFormArr:[{heading:'',subheading:''}]},
{key:"En",lang:"English",contentFormArr:[{heading:'',subheading:''}]},
{key:"Ru",lang:"Russian",contentFormArr:[{heading:'',subheading:''}]},
{key:"Sp",lang:"Spanish",contentFormArr:[{heading:'',subheading:''}]},
{key:"Ve",lang:"Vetnamese",contentFormArr:[{heading:'',subheading:''}]}
];
Во-вторых, я создаю один пустой массив и помещаю в него все значения, чтобы в него можно было вставить значение. Это невозможно сделать в состоянии из-за неизменяемого объекта, и после получения правильного индексного объекта я внес исправления и вернул объект.
addContentArea(index){
this.setState((state)=>{
let Arr=[];
state.form.map((e,i)=>{
Arr.push(e);
if(i===index){
Arr.contentFormArr.push({})
}
})
return{
Arr
}
})
}
Я сделал это, потому что мне кажется, что иметь дело с многомерными неизменяемыми массивами немного сложно, это не оптимизированный способ, но он работает каждый раз, и я проверил, что методы жизненного цикла компонента реакции также работают нормальноэто.