AS
Size: a a a
AS
AS
AS
И
A
A
A
T
class Application {
constructor(idApp, isSelected, appName) {
this.idApp = idApp;
this.isSelected = isSelected;
this.appName = appName;
}
toggleSelected() {
this.isSelected = !this.isSelected
}
};
class Member {
constructor(idMember, memberName, memberEmail, apps) {
this.idMember = idMember;
this.memberName = memberName;
this.memberEmail = memberEmail;
this.apps = apps;
}
};
const appsObject = appsFromBase.map((item, i) => new Application(i, false, item));
const membersObject = teamMembers.map((item, i) => new Member(item.idMember, item.name, item.email, appsObject));
его записываю в стейтconst [members, setMembers] = useState(membersObject);и хендлер (здесь я получаю id member и вызываю для него метод, который меняет true/false)
const handleChoosenApp = (app, member_i) => {
let newMembers = members;
let _id = app.idApp;
if (_id !== 'btn-all-app') {
newMembers[member_i].apps[_id].isSelected = !newMembers[member_i].apps[_id].toggleSelected()
setMembers(newMembers);
}
}
загвоздка в том, что этот метод меняет состояние абсолютно всех мемберов newMembers[member_i].apps[_id].toggleSelected()
MB
A
И
И

T
const handleChoosenApp = (app, member_i) => {
let _id = app.idApp;
if (_id !== 'btn-all-app') {
members[member_i].apps[_id].toggleSelected()
setMembers(members);
}
}И
T
const handleChoosenApp = (app, member_i) => {
let newMembers = {...members};
let _id = app.idApp;
if (_id !== 'btn-all-app') {
newMembers[member_i].apps[_id].toggleSelected()
setMembers(newMembers);
}
}A