Я создаю многостраничное приложение.Когда пользователь переходит на одну из моих страниц, запускается componentDidMount
и в настоящий момент генерирует 4 случайных числа в указанном мною диапазоне и отправляет их через мой редуктор.Это в конечном итоге возвращается в виде массива.
В пределах componentDidMount
У меня есть цикл для вызова моей функции generateRandomNumber
четыре раза.Однако, если я пойду в лог выходного массива, я получу пустой массив, который является начальным состоянием для указанного редуктора.
Запись массива в componentDidUpdate
или в любом месте после монтирования возвращает то, что я хочу, но это не помогает мне проверять дубликаты, так как я не могу проверять дубликаты, если проверяю пустой массив,Все должно быть без задержки, но, похоже, есть проблема с попыткой чтения из this.props.currentUserList
из componentDidMount
.
Мне нужно убедиться, что я не добавляю двух одинаковых пользователей в свой массив, но мне нужна предварительная проверка, чтобы все было сделано к тому времени, когда это появится на экране.
//gives me a random user from my array
generateRandomUser() {
return myArray[Math.floor(Math.random() * 100) + 1]
}
//sends 4 randomUsers through my actions to my reducers
generateNewID() {
let amountOfOptions = 4;
while (amountOfOptions > 0) {
let randomUser = this.generateRandomUser();
if (this.props.currentUserList.length === 0) {
this.props.setCurrentUser(randomUser);
} else {
//this never fires as currentUserList is somehow still == []
this.checkForDuplicates();
}
amountOfOptions--;
}
}
componentDidMount() {
this.generateNewID()
console.log(this.props.currentUserList)
//returns []
}
componentDidUpdate() {
console.log(this.props.currentUserList)
// returns [
// user2: {
// name: 'name'
// },
// user4: {
// name: 'name'
// },
// user28: {
// name: 'name'
// },
// user92: {
// name: 'name'
// },
// ]
}