我在ReactJS中開始了一個遊戲項目,作爲學習框架的一種方式,並且我陷入了一個問題。複雜層次結構的反應事件處理
我使用react-hexgrid
作爲我的核心組件,它基於六邊形。我有六個<HexTile/>
件組成的兩個<Hexagon/>
每個和一個<GameLayout/>
板,我可以拖動&下降他們。
的<HexTile/>
必須對<GameLayout/>
完全放置,我實現這個滴加每次一個<Hexagon/>
與first
變量,指示是第一六角丟棄。問題是我需要在移動完成時阻止其餘的<HexTile/>
。我想把這六個<HexTile/>
放在<TileList/>
裏面,但是因爲拖動事件監聽器綁定到<Hexagon/>
組件,所以我不知道如何告訴<TileList/>
一個移動正在完成,因此它禁用了其他<HexTile/>
。
如何讓<TileList/>
聆聽<HexTile/>
拖動事件? <HexTile/>
基於此<TilesLayout/>
部件(遊戲本身需要這個例子爲基礎):https://github.com/Hellenic/react-hexgrid/tree/master/examples/drag-and-drop
我強烈建議你使用Redux(react-redux)來處理事件,只要你的情況不是無足輕重就可以用道具和狀態來解決。然後,在處理事件時,您不必再考慮組件層次結構。您的應用程序越複雜,您使用Redux的越多。 – JulienD
您可以將狀態添加到偵聽該拖動事件的'TileList'嗎?像'isTileMoving'這樣的東西,並傳遞一個設置該狀態的處理程序 – BravoZulu