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)
}
..組件類現在可以看到我的課! 但是爲什麼?類和功能有什麼區別?
它似乎很適合我:https://codepen.io/anon/pen/MoJYoO?editors=1011 – sbking
是的。我在我的項目中進行了測試,確定無誤。遊戲和廣場是在同一個文件? – croraf
問題解決了。 Helper類是在組件類之後,這就是爲什麼它不能正常工作。 @croraf答案絕對正確。 –