[Vue warn]: Extraneous non-props attributes (XXX) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.
at <ChooseLeisureLocationIndex locationList= [] onUpdate:locationList=fn serviceName=“getFreeLocationList” … >
大致意思就是 ➡ 额外的非prop属性(xxx)已传递给组件,但由于你的组件渲染片段和文本根节点,无法自动继承。
造成这个问题的原因见下面两张图
父组件给子组件传值时,没有接收的地方,且子组件中并非一个根节点,所以才回出现这个警告。
那么有时只有一个根节点时不会出现这个警告,是因为触发了vue的透传attribute
解决办法
方法一:
就是你有需要传输一个prop属性的数据给子组件,但是你在子组件中忘记用defineProps接收,无意中触发了透传 Attributes,在使用setup语法糖的情况下注意使用defineProps接收props属性数据。
方法二:
就是你不需要传输一个prop属性的数据给子组件,但是你在整理代码时,忘记将父组件的子组件标签中的:xxx=“xxx"删除。
方法三:
你确确实实需要传递一个非prop属性数据到子组件中,但子组件中存在多个根节点,你可以在该根节点使用v-bind=”$attrs"进行显式绑定,就可以避免报错了