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

为何Copilot生成的React代码无法在Codepen中正常显示?

React代码在Codepen无法渲染的排查方向

问题描述

对比其他可正常运行的React Codepen示例,配置(Babel预处理器、React/ReactDOM导入)看似一致,但Copilot生成的购物车代码在Codepen中完全无法显示内容,多次核对未找到问题,求排查方向。

现有代码

HTML部分

<body>
  <div id="root"></div>
  <script src="index.js"></script>
</body>

CSS部分

body {
  margin: 0;
  padding: 0;
  font-family: sans-serif;
}

.container {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 20px;
}

.product-list {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.product-list .product {
  width: calc(33.33% - 20px);
  margin-bottom: 20px;
}

.product-list .product img {
  width: 100%;
}

.product-list .product .product-name {
  font-size: 1.2rem;
  font-weight: bold;
  margin-top: 10px;
}

.product-list .product .product-price {
  font-size: 1.2rem;
  color: #999;
  margin-top: 5px;
}

.product-list .product .product-add-to-cart {
  display: block;
  width: 100%;
  padding: 10px;
  background: #333;
  color: #fff;
  text-align: center;
  text-decoration: none;
  border-radius: 5px;
  margin-top: 10px;
}

.product-list .product .product-add-to-cart:hover {
  background: #555;
}

.cart {
  position: fixed;
  top: 20px;
  right: 20px;
  width: 300px;
  height: calc(100% - 40px);
  background: #fff;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
  padding: 20px;
}

.cart .cart-header {
  font-size: 1.2rem;
  font-weight: bold;
  margin-bottom: 20px;
}

.cart .cart-product-list {
  margin-bottom: 20px;
}

.cart .cart-product-list .cart-product {
  display: flex;
  align-items: center;
  margin-bottom: 10px;
}

.cart .cart-product-list .cart-product .cart-product-image {
  width: 60px;
  height: 60px;
  margin-right: 20px;
}

.cart .cart-product-list .cart-product .cart-product-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cart .cart-product-list .cart-product .cart-product-name {
  font-size: 1.2rem;
  font-weight: bold;
}

.cart .cart-product-list .cart-product .cart-product-price {
  font-size: 1.2rem;
  color: #999;
  margin-left: auto;
}

.cart .cart-product-list .cart-product .cart-product-remove {
  font-size: 1.2rem;
  color: #999;
  margin-left: 20px;
  cursor: pointer;
}

.cart .cart-product-list .cart-product .cart-product-remove:hover {
  color: #333;
}

.cart .cart-total {
  font-size: 1.2rem;
  font-weight: bold;
}

React JS部分

import React from "react";
import ReactDOM from "react-dom";
import "./style.css";
import {Component} from 'react';


const products = [
  {
    id: 1,
    name: "Product 1",
    price: 9.99,
    image: "https://via.placeholder.com/300"
  },
  {
    id: 2,
    name: "Product 2",
    price: 19.99,
    image: "https://via.placeholder.com/300"
  },
  {
    id: 3,
    name: "Product 3",
    price: 29.99,
    image: "https://via.placeholder.com/300"
  },
  {
    id: 4,
    name: "Product 4",
    price: 39.99,
    image: "https://via.placeholder.com/300"
  },
  {
    id: 5,
    name: "Product 5",
    price: 49.99,
    image: "https://via.placeholder.com/300"
  },
  {
    id: 6,
    name: "Product 6",
    price: 59.99,
    image: "https://via.placeholder.com/300"
  },
  {
    id: 7,
    name: "Product 7",
    price: 69.99,
    image: "https://via.placeholder.com/300"
  },
  {
    id: 8,
    name: "Product 8",
    price: 79.99,
    image: "https://via.placeholder.com/300"
  },
  {
    id: 9,
    name: "Product 9",
    price: 89.99,
    image: "https://via.placeholder.com/300"
  },
  {
    id: 10,
    name: "Product 10",
    price: 99.99,
    image: "https://via.placeholder.com/300"
  }
];

class App extends React.Component {
  state = {
    cart: []
  };

  addToCart = product => {
    this.setState({
      cart: [...this.state.cart, product]
    });
  };

  removeFromCart = product => {
    this.setState({
      cart: this.state.cart.filter(p => p.id !== product.id)
    });
  };

  
  render() {
    return (
      <div className="container">
        <div className="product-list">
          {products.map(product => (
            <div className="product" key={product.id}>
              <img src={product.image} alt={product.name} />
              <div className="product-name">{product.name}</div>
              <div className="product-price">{product.price}</div>
              <a
                href="#"
                className="product-add-to-cart"
                onClick={() => this.addToCart(product)}
              >
                Add to cart
              </a>
            </div>
          ))}
        </div>
        <div className="cart">
          <div className="cart-header">Cart</div>
          <div className="cart-product-list">
            {this.state.cart.map(product => (
              <div className="cart-product" key={product.id}>
                <div className="cart-product-image">
                  <img src={product.image} alt={product.name} />
                </div>
                <div className="cart-product-name">{product.name}</div>
                <div className="cart-product-price">{product.price}</div>
                <div
                  className="cart-product-remove"
                  onClick={() => this.removeFromCart(product)}
                >
                  Remove
                </div>
              </div>
            ))}
          </div>
          <div className="cart-total">
            Total:{" "}
            {this.state.cart.reduce((total, product) => total + product.price, 0)}
          </div>
        </div>
      </div>
    );
  }
}

ReactDOM.render(<App/>, document.getElementById("root"));

排查方向

  • 适配React版本:如果Codepen使用React 18,ReactDOM.render已废弃,需改用createRoot语法:
    import { createRoot } from 'react-dom/client';
    const root = createRoot(document.getElementById('root'));
    root.render(<App />);
    
  • 清理无效导入:删除代码中的import "./style.css";(Codepen单独管理CSS),并合并React导入为import React, { Component } from 'react';
  • 确认Codepen配置:在JS面板设置中,预处理器选Babel,并在“Settings > JavaScript”中添加React和ReactDOM的CDN资源(不要依赖代码内的import路径)
  • 查看控制台错误:打开浏览器开发者工具(F12),检查Console面板的语法错误、资源加载失败或React渲染报错信息
  • 逐步测试代码:先写一个极简React组件(如<h1>测试</h1>)确认能渲染,再逐步添加购物车代码定位问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:15:47