Я делаю «игру с угадыванием цвета», используя Reactjs, и у меня возникают некоторые проблемы с назначением случайного цвета фона для каждого квадрата.Поэтому, когда я делаю цикл for, чтобы показать 6 квадратов и пропускаю цветовые реквизиты, он дает одинаковый цвет всем квадратам, а не случайный цвет каждому квадрату ... Заранее спасибо!
Этомой компонент приложения:
import React, { Component } from 'react';
import './App.css';
import SquaresContainer from './containers/SquaresContainer/SquaresContainer';
class App extends Component {
constructor() {
super();
this.state = {
correctColor: undefined,
rgbDisplay: '',
colorSquares: undefined
}
}
generateRandomColor() {
let r = Math.round((Math.random() * 255)); //red 0 to 255
let g = Math.round((Math.random() * 255)); //green 0 to 255
let b = Math.round((Math.random() * 255)); //blue 0 to 255
return 'rgb(' + r + ', ' + g + ', ' + b + ')';
};
componentDidMount() {
let correctColor = this.generateRandomColor();
let colorSquares = this.generateRandomColor();
this.setState({
correctColor: correctColor,
rgbDisplay: correctColor,
colorSquares: colorSquares
})
};
render() {
return (
<div id="game">
{/* HEADER */}
<div id="header" className="header">
<h1 className="header__elem">THE GREAT
<br />
<span id="rgbDisplay">
{this.state.rgbDisplay}
</span>
<br />
GUESSING GAME
<br />
<span id="author">by Ana Fig</span>
<br />
<span id="language">REACT</span>
</h1>
</div>
{/* / HEADER */}
{/* MENU BUTTONS */}
<div id="menu">
<div>
<button id="newColorButton">NEW COLORS</button>
</div>
<span id="message"></span>
<div>
<button className="easyMode">EASY</button>
<button className="hardMode selected">HARD</button>
</div>
</div>
{/* / MENU BUTTONS */}
{/* SQUARES COMPONENT */}
<SquaresContainer color={this.generateRandomColor()} />
{/* / SQUARES COMPONENT */}
</div>
);
}
}
export default App;
Это мой компонент SquaresContainer:
import React, { Component } from 'react';
import './SquaresContainer.css';
import Square from '../../components/Square/Square';
class SquaresContainer extends Component {
constructor(props) {
super(props);
this.state = {
squares: 6
}
}
createSquares = () => {
let squares = [];
for (let i = 0; i < this.state.squares; i++) {
squares.push(<Square color={this.props.color} key={i} />);
}
console.log(this.props.color)
return squares;
}
render() {
return (
<div id="squaresContainer" className="container">
{this.createSquares()}
</div>
);
}
};
export default SquaresContainer;
Это квадратный компонент:
import React from 'react';
import './Square.css';
const Square = (props) => {
return (
<div className='square square__elem' style={{backgroundColor: props.color}}></div>
);
};
export default Square;
Это распечатка с происходящего: