Показать сообщение отдельно
  #12 (permalink)  
Старый 25.11.2019, 01:05
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Примерно так...
<html>
<head>
	<title></title>
	<style type="text/css">
		.cell{
			height: 50px;
			width: 50px;
			background-color: #FFFF00;
		}
		.game > div {
			width: 250px;
			display: flex;
			flex-wrap: wrap;
		}
	</style>
</head>
<body>
    <div id="root"></div>
    <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script>
    <script type="text/babel">

const { createElement, Component } = React;

class Game extends Component {
	state = {
		randomCell: null,
		greenCells: []
	}

	duel = Array.from(new Array(25), (_, i) => i);

	setGreen = () => {
		this.setState({
			randomCell: null,
			greenCells: this.state.greenCells.concat(this.state.randomCell)
		});
	};

	numRandom = () => {
		const randomCell = Math.floor(25 * Math.random());
		this.setState({ randomCell });
	};

	render() {
		const { randomCell, greenCells } = this.state;
		return <div className="game">
			<div>
				<button onClick={this.numRandom}>Play</button>
			</div>

			<div>{
				this.duel.map(i => {
					const style = {};
					if(greenCells.includes(i))
						style.backgroundColor = "green";
					if(randomCell === i)
						style.backgroundColor = "blue";
					return <div
						className="cell"
						style={style}
						onClick={randomCell === i ? this.setGreen : null}
					></div>
				})
			}</div>
		</div>
	}
}

ReactDOM.render(<Game />, document.getElementById("root"))

    </script>
</body>
</html>
Ответить с цитированием