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

React随机数归并排序可视化组件无内容渲染问题求助

问题

学习React实现基于随机数的归并排序可视化功能时,发现div标签无任何内容渲染,已添加console调试仍未找到原因,请求排查修复。

问题代码

import React from "react";

const number_of_array_bars = 310;

const sortingVisualizer = () => {
  const [array, setArray] = useState([]);

  useEffect(() => {}, []);
  const resetArray = () => {
    const newArray = [];
    for (let i = 0; i < number_of_array_bars; i++) {
      newArray.push(randomIntFromInterval(5, 730));
    }
    console.log("newArray", newArray);
    setArray(newArray);
  };
  const render = () => {
    return (
      <>
        {console.log("array", array)}
        {array.map((value, index) => {
          <div key={index} style={{ height: "${value}px" }}>
            test
          </div>;
        })}
      </>
    );
  };
  return render();
};

export default sortingVisualizer;

function randomIntFromInterval(min, max) {
  return Math.floor(Math.random() * (max - min + 1) + min);
}

排查与修复

代码存在5个关键问题导致渲染失败:

  • 未导入React Hooks:useState和useEffect需从React中导入,或改用React.useState、React.useEffect写法
  • 数组未初始化:useEffect空依赖数组内未调用resetArray,初始array为空数组,无元素可渲染
  • map函数未返回元素:箭头函数用{}包裹时未显式返回JSX,默认返回undefined
  • 样式语法错误:height值用双引号包裹模板字符串语法,需改用反引号实现动态值
  • 组件名不符合规范:React组件名必须大写开头,否则会被识别为原生HTML标签

修复后的完整代码:

import React, { useState, useEffect } from "react";

const number_of_array_bars = 310;

const SortingVisualizer = () => {
  const [array, setArray] = useState([]);

  useEffect(() => {
    resetArray();
  }, []);
  
  const resetArray = () => {
    const newArray = [];
    for (let i = 0; i < number_of_array_bars; i++) {
      newArray.push(randomIntFromInterval(5, 730));
    }
    setArray(newArray);
  };

  return (
    <>
      {array.map((value, index) => (
        <div 
          key={index} 
          style={{ 
            height: `${value}px`,
            width: '3px',
            backgroundColor: '#2ecc71',
            margin: '0 1px'
          }}
        />
      ))}
    </>
  );
};

export default SortingVisualizer;

function randomIntFromInterval(min, max) {
  return Math.floor(Math.random() * (max - min + 1) + min);
}

额外说明:修复后添加了宽度、背景色、边距等基础样式,让柱状条更直观,可根据需求调整样式细节;同时移除了单独的render函数,直接在组件返回中编写JSX,符合React组件常规写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:57:39