Я делаю ForEach внутри функции, и он работает, даже если не вызывается, поэтому отображает экран.
Я пытаюсь сделать следующее: когда я нажимаю на функцию startGame, элемент массива, который находится в позиции [1], равен 5, но как только он отображает экран, он уже запускается как 6.
И функция finishGame, которую я хочу, когда я нажимаю, я хочу, чтобы она отображалась 6, но она уже становится равной 6, прежде чем я даже щелкнул функцию.
начать игру:
startGame = () => {
this.state.cardsDealer.forEach(function(i, index, array) {
if (index === 1) {
array[1] = '6'
}
})
}finishGame = () => {
this.state.cardsDealer.forEach(function(i, index, array) {
if (index === 1) {
array[1] = '5'
}
})Кто-нибудь знает почему? Или, если я поступаю неправильно, ради чего я хочу?
Вы случайно не называете startGame в render? Также в for менять первый индекс массива бессмысленно, вобще array[1] = '6'. Нет необходимости в каких-либо for
Да, я знаю, но я не знаю, обойтись без этого ...
Вместо этого вы должны использовать this.setState. reactjs.org/tutorial/tutorial.html#an-interactive-component
Как я могу это сделать с помощью this.setState?
@Isac Я не говорю, что они делают, имеет смысл, но замена их forEach простым присваиванием изменит семантику: что, если массив пуст или имеет длину всего 1 элемент?
@Jota Вы проверяли предоставленную мной ссылку?
@zerkms Это честно. Хотя вы все равно можете проверить это с помощью if, и это все равно будет лучше, чем использование for, чтобы всегда устанавливать один и тот же элемент.
Вы не показываете, как вы связываете обработчики событий, поэтому мы мало что можем сказать. Пожалуйста, прочтите минимальный воспроизводимый пример.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


startGame() {
this.state.cardsDealer.forEach(function(i, index, array) {
if (index === 1) {
array[1] = '6'
}
})
}
Попытайся
Что ОП сделал не так? Что вы изменили? Почему это работает? «Попробуй» - это не ответ.
Лучше объяснить, что вы сделали, а не просто сбросить код.
Это недопустимый синтаксис для определения функции, если он не является частью литерала объекта (в этом случае это сокращение от startGame: function() { ... })
Я только что столкнулся с такой ситуацией, но не совсем понимаю, почему. Например, эти два фрагмента кода, первый фрагмент кода будет автоматически запускаться при запуске, я думаю, это может быть связано с этим? , Я все еще ищу ответы, но, пожалуйста, знайте, что студенты ответят, спасибо test = () => {console.info (1); } render () {<div onClick = {this.test ()}> </div>} test () {console.info (2); } render () {<div onClick = {this.test.bind (this)}> </div>}
Если звонили - так называли. «Или, если я поступаю неправильно» - вы не должны напрямую изменять объект
this.state.