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

Vue.js中如何正确在子组件使用方法?解决返回组件报错

问题解答

第一个疑问:父组件不需要重复定义backOneStep方法

你完全不需要在任何父组件里重复写这个方法!因为你已经把返回上一步的逻辑封装在goback.vue子组件里了,子组件自己的点击事件由内部的methods处理,父组件只需要引入并使用这个组件就行——这正是组件复用的核心价值,不用在每个父组件里重复造轮子😉

第二个疑问:报错的原因及解决方案

你的两个报错本质是同一个问题:goback.vue的script标签没有正确闭合,导致Vue无法解析子组件里的methods配置,自然找不到backOneStep方法,从而抛出“方法未定义”和“点击处理器无效”的警告。

修正后的goback.vue代码

<template>
  <span @click="backOneStep">
    <svg type="submit" class="arrowleft" >
      <use href="../static/icons/iconsset.svg#arrowleft"></use>
    </svg>
  </span>
</template>

<script>
export default {
  name: 'goback',
  data () {
    return {
    }
  },
  methods: {
    backOneStep(){
      window.history.go(-1)
    }
  }
}
</script> <!-- 这里之前错误写成了<script>,现在修正为闭合标签 -->

修正父组件的冗余代码

你的父组件代码里有两处不必要的问题:

  1. 多余定义了backOneStep方法,直接删掉即可
  2. 组件配置里存在语法错误(data闭合后多了一个逗号)

修正后的父组件示例:

<template>
  <div class="building">
    <div id="title">
      <goback></goback> <!-- 直接使用子组件即可 -->
    </div>
  </div>
</template>

<script>
import goback from './goback.vue';

export default {
  components: {
    goback
  },
  name: 'maincomponent',
  data () {
    return {
    }
  }
  // 删掉多余的methods部分,以及语法错误的逗号
}
</script>

额外说明

这个问题和props完全无关,因为你的子组件不需要从父组件接收任何数据或方法,它的逻辑是完全独立的。只要修正了script标签的闭合错误,组件复用就会正常工作——后续你只需要修改goback.vue的样式或模板,所有引用它的父组件都会同步更新。

内容的提问来源于stack exchange,提问作者Joao Alves Marrucho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:17:45