2017-06-16 7 views
1

私はTic Tac Toeゲームに関するリアクションチュートリアルをやっています。私は2Dゲームフィールドの状態を保存するヘルパークラスの正方形を作成することに決めました。反応コンポーネントにヘルパークラスが表示されません。どうして?

class Squares { 
    constructor(size) { 
     this._size = size 
     this._squares = Array(size * size).fill(null) 
    } 
    square(row, col, value) { 
     let position = (row - 1) * this._size + col - 1 
     if (value !== undefined) 
     this._squares[position] = value 
     return this._squares[position] 
    } 
    get size() { 
     return this._size 
    } 
    get copy() { 
     let squares = new Squares(this._size) 
     squares._squares = this._squares.slice() 
     return squares 
    } 
    } 

このようにコンポーネントの状態で使用します。

ただし、エラーが発生しました。 "TypeError:正方形はコンストラクタではありません"

内部コンポーネント正方形は定義されていません!しかし、私はクラスを機能させるために歪ませます。

function Squares(size) { 
    class Squares { 
    ... 
    } 
    return new Squares(size) 
} 

..コンポーネントクラスは今すぐクラスを見ることができます! しかし、なぜですか?クラスと関数の違いは何ですか?

+0

私のためにうまくいくようです:https://codepen.io/anon/pen/MoJYoO?editors=1011 – sbking

+0

はい。私は私のプロジェクトでテストしてOKです。ゲームと四角は同じファイルにありますか? – croraf

+1

問題が解決しました。ヘルパークラスはコンポーネントクラスの後にあったため、正しく機能しませんでした。 @crorafの答えは絶対に正しい。 –

答えて

0

クラスを使用する前に定義する必要があります。クラスと関数の違いの1つです。

私はクラスをテストしましたが、スクエアがゲームの下にあるときにも機能します。これはおそらく私のセットアップで発生するいくつかの蒸散のためです。

関連する問題