首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向对象状态管理中的反应?

面向对象状态管理中的反应?
EN

Stack Overflow用户
提问于 2022-03-15 17:30:54
回答 1查看 267关注 0票数 0

我一直在为一个大学项目建立一个国际象棋式的棋盘游戏,使用React作为前端让用户与游戏交互,但我现在遇到了一个小问题,当我试图实现一个人工智能对手来对抗。

我想基本上运行另一个副本的游戏,与“真正的”游戏,这样的AI可以模拟不同动作的结果,并确定最好的选择。我的方法是用包含玩游戏所需的所有属性和方法的Game类替换React状态;这样,可以同时进行多个游戏,AI可以镜像主游戏,模拟动作而不影响呈现到屏幕上的内容。

然而,在这样做时,我已经将游戏状态与React的状态系统完全解耦,这样它就不知道什么时候重新修改数据,而我的游戏现在是不可玩的。

对于我想要做的事情,有什么最佳的实践方法吗?或者有人能看到我如何解决这个问题?

如果有帮助的话,很乐意提供更多的信息或代码片段!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-15 18:08:31

我建议你去看看MobX

可以从应用程序状态派生的任何内容都应该是。是自动的。

很简单,您可以将它用于Game类来创建实例。

我不知道你的Game类是什么样子,但你可以把它作为一个例子

代码语言:javascript
复制
import React from "react"
import ReactDOM from "react-dom"
import { makeAutoObservable } from "mobx"

class Game {
    isStarted := false

    constructor() {
        makeAutoObservable(this) //need this for MobX when you create a new instance
    }

    start() {
        isStarted = true
    }
}

下面是我们如何将它与您的组件集成在一起的

代码语言:javascript
复制
import { observer } from "mobx-react-lite"

export const GameView = observer(({ game }) => (<>
   <span>{game.isStarted}</span>
   <button onClick={game.start}>Start game</button>
</>))

export default GameView

上面的组件可以是这样的

代码语言:javascript
复制
const App = () => {
   const game = new Game()
   return <GameView game={game}/>
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71486560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档