2017-06-16 46 views
1

我正在做關於井字遊戲的React教程。我決定創建助手類Squares,以存儲2D遊戲場地狀態。React組件看不到助手類。爲什麼?

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 
    } 
    } 

並在組件的狀態下使用它,像這樣。

class Game extends React.Component { 
    constructor() { 
    super() 
    this.state = { 
     history: [{ 
     squares: new Squares(3) 
     }], 
     stepNumber: 0, 
     xIsNext: true, 
    } 
    } 

但後來我得到了錯誤。 「TypeError:正方形不是構造函數」

內部組件正方形是未定義的!但是當我把我的課程變成功能。

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

..組件類現在可以看到我的課! 但是爲什麼?類和功能有什麼區別?

+0

它似乎很適合我:https://codepen.io/anon/pen/MoJYoO?editors=1011 – sbking

+0

是的。我在我的項目中進行了測試,確定無誤。遊戲和廣場是在同一個文件? – croraf

+1

問題解決了。 Helper類是在組件類之後,這就是爲什麼它不能正常工作。 @croraf答案絕對正確。 –

回答

0

類應在使用之前定義,這是類和函數之間的區別之一。

儘管我測試了你的課程,而且它也適用於Squares低於Game的課程。這可能是由於我的設置中發生了一些轉運。

相關問題