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
核心修改点:
- 在Post函数的参数位置解构出父组件传入的
username、caption、imageUrl三个属性,让变量可被组件内部识别 - 将JSX中无效的Markdown加粗语法替换为原生的
<strong>标签 - 可选优化:将Avatar的alt属性改为传入的username,语义化更好
内容的提问来源于stack exchange,提问作者Luminos
相关产品推荐
相关产品推荐

