微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

React dnd - 棋盘教程示例问题

如何解决React dnd - 棋盘教程示例问题

我想让骑士可以移动到任何方格(不遵循游戏规则)。所以我改变了函数文件 Game.js 中的 canMoveKnight 像这样:

canMoveKnight(toX,toY) {
    return true;  
}

结果是:骑士根本无法移动。

但是如果我将函数更改为:

canMoveKnight(toX,toY) {
    const [x,y] = this.knightPosition
    return (x !== toX || y !== toY)
}

基本上,只排除骑士位置。在其他方格中仍然返回 TRUE。它有效。

任何人都可以帮助解释为什么对于所有不工作的方块都返回 TRUE?

您可以在此处使用源代码https://codesandbox.io/s/github/react-dnd/react-dnd/tree/gh-pages/examples_hooks_js/00-chessboard?from-embed

幸运的是,我认为有人在关闭之前回答了这个问题。

我尝试了答案。通过将 zIndex 添加到 Knight,它确实有效。

如果没有 zIndex,BoardSquare 会捕获鼠标事件,并且 BoardSquare 不可拖动。

解决方法

这是你遇到的一个奇怪的问题!我也很想听听其他人对此的回答,因为我仍然对问题的原因很好奇。不过我确实为您找到了解决方案!

如果骑士棋子在同样有效的棋子上,它似乎以某种方式被阻止被点击。 (如果有人能弄清楚原因,请分享)

要解决此问题,您可以向骑士添加 position: absolute 以及 z-index: <value>。这使得骑士 div 出现在其他一切之上,因此它仍然是可拖动的。

具体来说,您可以将 knightStyle 中的 Knight.jsx 更改为:

const knightStyle = {
    fontSize: 40,fontWeight: 'bold',cursor: 'move',position: 'absolute',zIndex: 50,};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。