Closed andreyzagoruy-dev closed 4 years ago
@andreyzagoruy-dev тут ти використав деструктуризацію для startGame - круто
handleSubmit(event) {
const { startGame } = this.props;
event.preventDefault();
startGame(this.state);
}
тут ні, пропоную використать
handleChange(event) {
const target = event.target;
const name = target.name;
const value = target.value;
this.setState({
[name]: value
});
}
також можна використати деструктуризацію для змінних зі стейту, а подібні списки винести в масив і рендерить через .map. Це дозволяє додавати і прибирати нові елементи списків дуже легко і швидко
<select className="form-config__select" name="size" value={this.state.size} onChange={this.handleChange}>
<option value="6">Tiny</option>
<option value="8">Normal</option>
<option value="10">Huge</option>
</select>
я форматував би кожну умову в один рядок, але це чисто косметичне, типу
if (isMarked) return 'cell--marked'
getCellModifier() {
const { value, isOpened, isMarked, isMine } = this.props;
if (isMarked) {
return 'cell--marked';
}
if (isMine && isOpened) {
return 'cell--mine';
}
if (!isMarked && isOpened && !value) {
return 'cell--empty';
}
if (!isOpened) {
return 'cell--closed';
}
return '';
}
не зовсім розумію для чого тобі інішиал стейт і тут
const initialBoardState = {
isGameOver: false,
isWon: false,
markersLeft: this.props.mines
}
і тут
this.state = {
markersLeft: props.mines,
isGameOver: false,
isWon: false,
board: null
}
не зовсім розумію для чого тобі інішиал стейт і тут
const initialBoardState = { isGameOver: false, isWon: false, markersLeft: this.props.mines }
і тут
this.state = { markersLeft: props.mines, isGameOver: false, isWon: false, board: null }
В первом случае - при окончании игры и нажатии кнопки рестарт чтобы убрать флаги и можно было сыграть заново. Во втором случае чисто формально обьявляю чтобы было понятно что в стейте хранится
mines = mines - 1;
mines--
Не задумывался что они по скорости отличаются, думал сугубо вкусовщина :) интересно, спасибо!
не зовсім розумію для чого тобі інішиал стейт і тут
const initialBoardState = { isGameOver: false, isWon: false, markersLeft: this.props.mines }
і тут
this.state = { markersLeft: props.mines, isGameOver: false, isWon: false, board: null }
Предлагаю такое решение, чтобы не дублировался обьект в коде и в одном месте начальный стейт редактировался(исключаем шанс, что забудем добавить в стартГейм важное поле в будущем):
Спасибо за ревью! Текущие правки учел и запушил
Взагалі, дуже непогано зроблена домашка, в логіку я не дуже детально вчитувався, можливо там можна ще шось знайти. Прикольний дизайн, добре підібрані кольори, я навіть на обіді пограв трохи, більше того, один раз навіть виграв. Мені подобається
Взагалі, дуже непогано зроблена домашка, в логіку я не дуже детально вчитувався, можливо там можна ще шось знайти. Прикольний дизайн, добре підібрані кольори, я навіть на обіді пограв трохи, більше того, один раз навіть виграв. Мені подобається
Дякую! Дуже приємно це чути :)
https://andreyzagoruy-dev.github.io/minesweeper/preview/
https://github.com/andreyzagoruy-dev/minesweeper