我是第一次玩 React,我想我真的很喜欢它。到目前为止,我已经实现了(大部分)棋盘游戏围棋,但我遇到了一些奇怪的事情,我不知道如何以惯用的 React 方式处理。基本上,我有一个模型——棋盘游戏——实现为它自己的类Board。它只公开它的构造函数、方法play(i,j)
和pass
. 它处理所有游戏逻辑并适当地更新自己的内部状态。它没有引用与视图/组件相关的任何内容。我有一个名为BoardView的 React 组件,它维护对Board
. 我还有一个名为AlertView
在适当的时候显示有关游戏状态(非法移动等)的消息。
现在一切正常,我喜欢Board
类和它的视图之间的关注点分离。但是,我让我的Board
班级将其更改传达给视图的方式很不寻常,而且我觉得它与其他 React 代码不一致。基本上,我滥用jQuery 的事件系统来允许我触发任意事件,例如["update", "atari", "suicide"]
. 在这个方案中,组件有一个 onClick 监听器,它会调用Board.play
0 到 Board 实例上的许多事件。组件侦听"update"
事件并调用this.setState
,这将强制它重新render()
- 将视图置于正确描述游戏的状态。AlertView
侦听同一板实例上的 和 事件并类似地"atari"
调用"suicide"
this.setState
, 这触发另一个render()
.
我应该删掉 jQuery 事件吗?如果是这样,最好的方法是什么?
编辑:为了后代,这个问题是在提交3f600c时提出的。