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

React运行报'is not defined no-undef'错误的原因与修复方法

报错原因分析
  • 你在调用Post组件时已经通过属性传递了username、caption、imageUrl三个参数,但Post组件定义时没有接收父组件传递的props参数,也没有声明对应的变量,直接在JSX中引用这三个不存在的变量,所以触发了ESLint的no-undef未定义变量报错。
  • 额外问题:你在JSX的<h3>标签里用了Markdown语法**{username}**,JSX不支持直接解析Markdown语法,这种写法最终不会生效,还可能出现显示异常。
修复方案

修改Post组件的代码,完整修正后的代码如下:

import React, {useState} from 'react'
import './post.css'
import './App.js'
import Avatar from "@material-ui/core/Avatar"

// 接收并解构父组件传递的props
function Post({ username, caption, imageUrl }) {
    return (
        <div className="post">
            <div className="post__header">
            <Avatar
                className="post__avatar"
                // alt属性替换为传入的username,语义化更合理
                alt={username}
                src="/static/images/avatar/1.jpg"
            ></Avatar>
            {/* 替换无效的Markdown加粗语法为原生strong标签 */}
            <h3><strong>{username}</strong></h3>
            </div>
            <img
            className = "post__image" 
            src={imageUrl} />
            
            <h4 className="post__text"><strong>{username}</strong> {caption}</h4>
        </div>
    )
}

export default Post

核心修改点:

  1. 在Post函数的参数位置解构出父组件传入的username、caption、imageUrl三个属性,让变量可被组件内部识别
  2. 将JSX中无效的Markdown加粗语法替换为原生的<strong>标签
  3. 可选优化:将Avatar的alt属性改为传入的username,语义化更好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:15:04