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

Vue非TypeScript环境下父组件向子组件传递props及访问方法

Vue 3 Props传递与ESLint问题解决

1. App.vue中传递clicked的方式是否正确?

传递方式是正确的。:clicked="clicked"是Vue 3中动态绑定props的标准语法,冒号:表示将父组件中ref类型的clicked的实时值传递给子组件,子组件可以直接使用该值进行条件渲染逻辑。

2. 非TypeScript环境下如何在子组件中接收props?

分两种组件写法场景处理:

选项式API(非<script setup>)

直接在组件的props选项中定义接收的属性,指定类型、必填性等规则:

<script>
export default {
  props: {
    clicked: {
      type: Boolean,
      required: true // 根据业务需求可设为false
    }
  }
}
</script>

<template>
  <div v-if="clicked">仅当clicked为true时显示</div>
</template>

组合式API(<script setup>)

使用Vue 3内置的defineProps编译器宏(无需导入),通过对象语法定义props规则:

<script setup>
// 定义并接收props
const props = defineProps({
  clicked: {
    type: Boolean,
    required: true
  }
})

// 可解构后直接使用
const { clicked } = props
</script>

<template>
  <div v-if="clicked">仅当clicked为true时显示</div>
</template>

3. 如何解决defineProps相关的ESLint报错?

defineProps是Vue 3 <script setup>专属的编译器宏,ESLint默认未将其识别为全局变量,需通过ESLint配置解决:

  1. 确保已安装eslint-plugin-vue插件(Vue项目通常默认已安装)
  2. 在ESLint配置文件(如.eslintrc.js、.eslintrc.json)中,启用vue/setup-compiler-macros环境:
// .eslintrc.js示例配置
module.exports = {
  env: {
    browser: true,
    es2021: true,
    // 关键配置:告知ESLint这是Vue 3 setup语法的编译器宏
    'vue/setup-compiler-macros': true
  },
  extends: [
    'plugin:vue/vue3-essential'
  ],
  parserOptions: {
    ecmaVersion: 'latest'
  },
  plugins: [
    'vue'
  ]
}

注:修改babel.config.js无法解决该问题,因为报错来自ESLint的变量未定义检查,而非Babel编译环节。如果仅需临时忽略单个文件的报错,可在脚本顶部添加注释/* global defineProps */。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:45:34