Я пытаюсь выяснить, как я могу добавить выбранных пользователей в многомерный массив в разное время. Мой код работает сейчас так: он берет выбранных пользователей со страницы CustomerQue и добавляет их на страницу таблиц. Затем потребитель добавляет номер таблицы, а затем устанавливает набор, и это добавляет пользователя к номеру таблицы. Таблица - это массив. Но когда я go возвращаюсь и пытаюсь добавить / выбрать больше пользователей, чтобы добавить их в другую таблицу. Он добавляет таблицу и всех пользователей вместе.
Вот мой код из CustomerQue ...
constructor(props){
super(props);
this.state = {
rlocationcode: '',
dataSource: [],
selectedUsers: [],
};
}
handleTouchItem2 = async (item) => {
try {
let users = this.state.dataSource;
await AsyncStorage.setItem('users', JSON.stringify(users));
this.props.navigation.navigate("Tables", {
cust_ID: item,
otherParam: '101',
});
} catch (error) {
console.log('There is no one checked in', error.message);
}
}
_didSelectUsers = (item) => {
let selectedUsers1 = this.state.selectedUsers;
let isItemSelected = selectedUsers1.filter(item => {
return item.includes(item);
}).length > 20
? true : false;
if (isItemSelected) {
const index = selectedUsers1.findIndex(
obj => obj.item === selectedUsers1
);
selectedUsers1.splice(index, 1);
} else {
selectedUsers1.push(item);
}
this.setState({ selectedUsers1 });
console.log(selectedUsers1)
}
Вот мой код для страницы таблиц ....
constructor(props) {
super(props);
this.array = [],
this.party = [],
this.state = {
arrayHolder: [],
party: [],
disabled: true,
textInput_Holder: '',
selectedIndex: 2,
}
this.updateIndex = this.updateIndex.bind(this)
}
_addTable = (index) => {
if (index === 0) {
this.array.push({Table : this.state.textInput_Holder});
for (var i = 0; i < this.array.length; i++) {
this.setState({ arrayHolder: [...this.array] });
console.log(this.array);
}
}
}
_setTable2 = async (index) => {
if (index === 1) {
const { navigation } = this.props;
const cust = navigation.getParam('cust_ID', 'No-User');
const other_param = navigation.getParam('otherParam', 'No-User');
const cust1 = JSON.stringify(cust);
const cust2 = cust1.replace(/[\])}[{(]/g, '');
const cust3 = cust2.replace(/[""]/g, '');
try {
await AsyncStorage.setItem('cust3', cust3)
let Tab = [this.array];
let TAC = Tab.concat([cust3]);
this.state.party.push([cust3]);
for (var i = 0; i < this.state.party.length; i++) {
this.setState({ party: [...this.state.party]})
console.log(this.state.party.join('\r\n'));
return this.state.party.join('\r\n');
}
} catch(error) {
console.log('There is a problem', error.message);
}
}
}
_openTable = async () => {
try {
const partyGroup = await AsyncStorage.getItem('cust3');
this.props.navigation.navigate('ViewParty', {
TAC1: partyGroup,
otherParam: '101',
});
} catch(error) {
console.log('No Table', error.message)
}
}
Я попытался удалить элемент из AsyncStorage, и он удаляет все, даже элементы, которые я уже добавил в массив. Я попытался соединить selectedUsers, и он сделал то же самое. Он удаляет все, и когда я пытаюсь выбрать новых пользователей, он добавляет тех, которые я только что удалил, обратно к выбранным пользователям.
Как лучше всего с этим справиться?