Props不能直接重命名,但可通过解构别名(如{userName:name})在子组件内统一使用语义化变量名;Vue3中defineProps不支持声明时别名,需解构处理;类型校验+别名推荐用computed或ref封装;禁止修改props对象或混用原名与别名。

Props 本身不能直接“重命名”,但可以在子组件内部用别名接收并使用,达到规范化变量名的效果。关键不是改 Props 名,而是把传入的 props 值赋给语义更清晰、符合团队规范的局部变量。
函数组件中用解构别名
这是最常用也最简洁的方式。在解构 props 时,用 冒号语法 指定别名:
const { userName: name, userAge: age, isActive: isOnline } = props;- 外部传
<usercard username="张三" userage="28" isactive></usercard> - 组件内部统一用
name、age、isOnline,避免到处写props.userName
Vue 中 defineProps 的别名处理
Vue 3 的 <script setup></script> 不支持直接在 defineProps 里起别名,但可在解构时处理:
const props = defineProps({ user_name: String, user_status: String });- 接着:
const { user_name: name, user_status: status } = props; - 这样模板中可用
{{ name }},逻辑中也用status,和驼峰命名习惯一致
需要类型校验时的别名方案
如果既要类型/必填校验,又要内部用别名,推荐封装一层计算属性或 ref:
- Vue 示例:
const displayName = computed(() => props.user_name || '匿名用户'); - React 示例:
const displayName = props.userName ?? '匿名用户'; - 本质是把原始 props 当作输入源,输出一个命名规范、有默认兜底的内部变量
不建议的做法
直接修改 props 对象(如 props.name = props.userName)是错误的——props 是只读的,强行赋值无效且会触发警告;也不要在 props 解构时混用原名和别名(如 { userName, userAge: age }),易造成维护混乱。


















