У меня есть некоторые проблемы с массивом в моем проекте, но я не знаю, как исправить
Мой массив выглядит так:
const [array, setArray] = useState([
{ id: 1, name: 'Luca', classes: [{ id: 1, className: '', teacherName: '' }, { id: 2, className: '', teacherName: '' }] },
{ id: 2, name: 'Jin', classes: [{ id: 1, className: '', teacherName: '' }, { id: 2, className: '', teacherName: '' }] },
])
< FlatList
data = { array }
renderItem = {({ item, index }) => {
return (
<View>
<FlatList
data={item.classes}
renderItem={({ item, index }) => {
return (
<View >
<TextInput
placeholder={''}
onChangeText={(text) => onChangeClassName(item, text)}
value={item.className}
/>
</View>
)
}}
></FlatList>
</View>
)
}}
></FlatList >
onChangeClassName
onChangeClassName = (item, text) => {
const newArr = arr
for (let i = 0; i < newArr.length; i++) {
for (let z = 0; z < newArr[i].classes.length; z++) {
if (newArr[i].classes[z] === item ) {
newArr[i].classes[z].className = text
} }]
}
}
}
setArray([...arr])
}
Таким образом, у каждого ученика есть имя и классы, классы каждого ученика различны, и я изменяю его с помощью textInput. Моя проблема в том, что когда я установил className для одного из студентов, оба className в одной и той же позиции студентов изменились
ex: Кликнул в классах [0] Luca -> set text = '7A'
массив будет изменен следующим образом.
const [array, setArray] = useState([
{ id: 1, name: 'Luca', classes: [{ id: 1, className: '7A', teacherName: '' }, { id: 2, className: '', teacherName: '' }] },
{ id: 2, name: 'Jin', classes: [{ id: 1, className: '7A', teacherName: '' }, { id: 2, className: '', teacherName: '' }] },
])
У кого-нибудь есть решение? Пожалуйста, помогите мне