<template> <component :is="type" v-bind="linkProps(to)"> <slot /> </component> </template> <script> import { isExternal } from '@/utils/validate' export default { props: { to: { type: String, required: true } }, computed: { isExternal() { return isExternal(this.to) }, type() { if (this.isExternal) { return 'a' } return 'router-link' } }, methods: { linkProps(to) { if (this.isExternal) { return { href: to, target: '_blank', rel: 'noopener' } } return { to: to } } } } </script>报错 Maximum call stack size exceeded
时间: 2024-02-14 07:35:19 浏览: 36
VUE--组件示例 博客 https://gudianxiaoshuo.blog.csdn.net/article/detail
这个错误通常发生在无限循环中,也就是组件递归调用自身导致的。你可以检查一下你的代码是否存在这种情况。在你的代码中,你使用了 computed 属性来计算 isExternal 和 type,这两个属性都引用了 to 属性,而 to 属性又作为 props 传递给了组件。这样会导致组件递归调用自身,从而导致 Maximum call stack size exceeded 错误。你可以尝试将这两个计算属性改为普通的方法,或者使用其他方式避免循环引用的问题。如果你无法解决问题,可以提供更多的代码信息,我可以帮你进一步分析。
阅读全文