Вопрос из двух частей о правильном добавлении выбранных пользователей в многомерный массив в react native - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь выяснить, как я могу добавить выбранных пользователей в многомерный массив в разное время. Мой код работает сейчас так: он берет выбранных пользователей со страницы 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, и он сделал то же самое. Он удаляет все, и когда я пытаюсь выбрать новых пользователей, он добавляет тех, которые я только что удалил, обратно к выбранным пользователям.

Как лучше всего с этим справиться?

1 Ответ

0 голосов
/ 27 мая 2020

Попробуйте перехватить react-native. Или вы также можете попробовать управление состоянием, такое как redux mobx, для обработки данных на протяжении всего жизненного цикла приложения.

...