MastersAcademy / frontend-course-2019

Репозиторій з курсу «Advanced Front-end» проекту Masters Academy
https://www.facebook.com/cherkasy.masters/
MIT License
4 stars 19 forks source link

Homework 5 JS #142

Closed andreyzagoruy-dev closed 4 years ago

andreyzagoruy-dev commented 4 years ago

https://andreyzagoruy-dev.github.io/minesweeper/preview/

https://github.com/andreyzagoruy-dev/minesweeper

VladislavChudak commented 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
    });
  }
VladislavChudak commented 4 years ago

також можна використати деструктуризацію для змінних зі стейту, а подібні списки винести в масив і рендерить через .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>
VladislavChudak commented 4 years ago

я форматував би кожну умову в один рядок, але це чисто косметичне, типу 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 '';
  }
VladislavChudak commented 4 years ago

не зовсім розумію для чого тобі інішиал стейт і тут

    const initialBoardState = {
      isGameOver: false,
      isWon: false,
      markersLeft: this.props.mines
    }

і тут

    this.state = {
      markersLeft: props.mines,
      isGameOver: false,
      isWon: false,
      board: null
    }
VladislavChudak commented 4 years ago

mines = mines - 1;

mines--

http://jsben.ch/LXSZN

andreyzagoruy-dev commented 4 years ago

не зовсім розумію для чого тобі інішиал стейт і тут

    const initialBoardState = {
      isGameOver: false,
      isWon: false,
      markersLeft: this.props.mines
    }

і тут

    this.state = {
      markersLeft: props.mines,
      isGameOver: false,
      isWon: false,
      board: null
    }

В первом случае - при окончании игры и нажатии кнопки рестарт чтобы убрать флаги и можно было сыграть заново. Во втором случае чисто формально обьявляю чтобы было понятно что в стейте хранится

andreyzagoruy-dev commented 4 years ago

http://jsben.ch/LXSZN

mines = mines - 1;

mines--

http://jsben.ch/LXSZN

Не задумывался что они по скорости отличаются, думал сугубо вкусовщина :) интересно, спасибо!

andreyzagoruy-dev commented 4 years ago

не зовсім розумію для чого тобі інішиал стейт і тут

    const initialBoardState = {
      isGameOver: false,
      isWon: false,
      markersLeft: this.props.mines
    }

і тут

    this.state = {
      markersLeft: props.mines,
      isGameOver: false,
      isWon: false,
      board: null
    }

Предлагаю такое решение, чтобы не дублировался обьект в коде и в одном месте начальный стейт редактировался(исключаем шанс, что забудем добавить в стартГейм важное поле в будущем): code

andreyzagoruy-dev commented 4 years ago

Спасибо за ревью! Текущие правки учел и запушил

VladislavChudak commented 4 years ago

Взагалі, дуже непогано зроблена домашка, в логіку я не дуже детально вчитувався, можливо там можна ще шось знайти. Прикольний дизайн, добре підібрані кольори, я навіть на обіді пограв трохи, більше того, один раз навіть виграв. Мені подобається

andreyzagoruy-dev commented 4 years ago

Взагалі, дуже непогано зроблена домашка, в логіку я не дуже детально вчитувався, можливо там можна ще шось знайти. Прикольний дизайн, добре підібрані кольори, я навіть на обіді пограв трохи, більше того, один раз навіть виграв. Мені подобається

Дякую! Дуже приємно це чути :)