от
Я делаю рок, бумага, ножницы игра. В приведенном ниже коде у меня есть файл контекста, который используется для хранения глобального государства. Я также показываю мой компонент выбор. Когда пользователь нажимает на кнопку в компоненте выбора, метод setChoices называется которая должна установить выбора пользователя и переменные выбор процессора в глобальном состоянии. Затем cpuScore() метод, затем побежали увеличивать счет процессора (просто для иллюстрации проблемы). Обновления счет процессора, как ожидалось, но переменные выбора не обновляются. Если я не запустить способ cpuScore, выбор переменных обновление, как и ожидалось, но явно не результат. файл //контекст
import React, { createContext, useState } from 'react';

const GameContext = createContext();

const GameContextProvider = props => {

     const [gameItems, setGameItems] = useState(
        {userChoice: null, userScore: 0, cpuChoice: null, cpuScore: 0}
    );

    const setChoices = (userChoice, cpuChoice) => {
        setGameItems({...gameItems, userChoice: userChoice, cpuChoice: cpuChoice})
    }

    const cpuScore = () => {
        setGameItems({...gameItems, cpuScore: gameItems.cpuScore   1})
    }

    return (
        
            { props.children }
        
    )
}
export default GameContextProvider;
компонент //выбор
import React, { useContext } from 'react';
import { GameContext } from '../contexts/GameContext';
const Choices = (props) => {

    const {  setChoices, cpuScore } = useContext(GameContext);

    const getCpuChoice = () => {
        const cpuChoices = ['r', 'p', 's'];
        const randomIndex = Math.floor((Math.random() * 3));
        const cpuDecision = cpuChoices[randomIndex];
        return cpuDecision
}

const playGame = (e) => {
    const userChoice = e.target.id;
    const cpuChoice = getCpuChoice();

    setChoices(userChoice, cpuChoice);
    cpuScore();

} 
return (
        
            Make Your Selection
            
                <i className="choice fas fa

Что мне нужно изменить, чтобы установить состояние для выбора и результат?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
...