You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React国际象棋应用组件不显示,请求技术排查协助

React国际象棋组件不显示问题排查

开发React国际象棋应用时,添加棋子图片后原本可见的黑色方块消失,组件无法正常显示。已检查图片路径、排查.map()逻辑,但问题仍存在。

相关代码

React代码

import React from 'react';
import './App.css';

const horizontalLine = ["8", "7", "6", "5", "4", "3", "2", "1"];
const verticalLine = ["a", "b", "c", "d", "e", "f", "g", "h"];

const pieces = {
  "a1": "white-rook.png",
  "b1": "white-knight.png",
  "c1": "white-bishop.png",
  "d1": "white-queen.png",
  "e1": "white-king.png",
  "f1": "white-bishop.png",
  "g1": "white-knight.png",
  "h1": "white-rook.png",
  "a2": "white-pawn.png",
  "b2": "white-pawn.png",
  "c2": "white-pawn.png",
  "d2": "white-pawn.png",
  "e2": "white-pawn.png",
  "f2": "white-pawn.png",
  "g2": "white-pawn.png",
  "h2": "white-pawn.png",
  "a8": "black-rook.png",
  "b8": "black-knight.png",
  "c8": "black-bishop.png",
  "d8": "black-queen.png",
  "e8": "black-king.png",
  "f8": "black-bishop.png",
  "g8": "black-knight.png",
  "h8": "black-rook.png",
  "a7": "black-pawn.png",
  "b7": "black-pawn.png",
  "c7": "black-pawn.png",
  "d7": "black-pawn.png",
  "e7": "black-pawn.png",
  "f7": "black-pawn.png",
  "g7": "black-pawn.png",
  "h7": "black-pawn.png",
};


function App() {
  const Coloring = (ver, hor) => {
    return (ver.charCodeAt(0) % 2 === hor % 2) ? "black" : "white";
  };

  return (
    <div className="App">
      {horizontalLine.map((horizontals) => (
        verticalLine.map((verticals) => {
          const id = `${verticals}${horizontals}`;
          const piece = pieces[id];
          return (
            <div
              className={`square ${Coloring(verticals, parseInt(horizontals))}`}
              key={id}
              id={id}
            >
              {piece && <img src={`./pieces-basic-png/${piece}`} alt={piece} />}
            </div>
          );
        })
      ))}
    </div>
  );
}

export default App;

CSS代码

.App{
  width: 700px;
  display: flex;
  flex-wrap: wrap;
}

.square{
  width: 85px;
  height: 85px;
  box-sizing: border-box;
}

.piece{
  width: 85px;
  height: 85px;
}

问题截图

截图1
截图2
截图3

问题根源及解决办法

1. 缺少格子背景色样式

你的CSS里仅定义了.square的宽高,但未给.black和.white类设置背景颜色,这直接导致黑格无法显示。补充以下样式:

.black {
  background-color: #769656; /* 国际象棋黑格经典色 */
}
.white {
  background-color: #eeeed2; /* 白格经典色 */
}

2. 图片路径需调整

在React项目中,静态资源的路径规则需要注意:

  • 若图片放在public文件夹下,使用绝对路径(去掉开头的./):
    {piece && <img src={`/pieces-basic-png/${piece}`} alt={piece} className="piece" />}
    
  • 若图片放在src文件夹里,需通过require引入:
    {piece && <img src={require(`./pieces-basic-png/${piece}`).default} alt={piece} className="piece" />}
    

3. 图片未应用样式

你在CSS中定义了.piece类来控制图片大小,但img标签未添加该类,导致图片可能超出格子或显示异常。给img加上className="piece"即可。

内容的提问来源于stack exchange,提问作者tajgel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 17:47:00