Vue警告:属性或方法“item”未在实例上定义,但在渲染期间被引用
Posted
技术标签:
【中文标题】Vue警告:属性或方法“item”未在实例上定义,但在渲染期间被引用【英文标题】:Vue warn: Property or method "item" is not defined on the instance but referenced during render 【发布时间】:2021-02-10 16:13:31 【问题描述】:我在迭代 CartItem 时遇到错误。
属性或方法“item”是 未在实例上定义,但在渲染期间引用。通过初始化属性,确保此属性是反应性的,无论是在数据选项中,还是对于基于类的组件
为什么会出现这个错误,我该如何解决。 [注意:这是一个nativescript vue项目]
<ListView
v-for="(item, index) in cartItems"
:key="index"
class="listCard"
>
<v-template>
<GridLayout
rows="auto"
columns="auto,*3,auto"
backgroundColor="white"
class="innerList"
>
<StackLayout orientation="horizontal" col="0" row="0">
<Button>
<FormattedString>
<Label
class="fa fas"
:text="'fa-trash' | fonticon"
fontSize="30"
></Label>
</FormattedString>
</Button>
<Image :src="item.imageUrl" ></Image>
</StackLayout>
<StackLayout col="1" row="0">
<Label
:text="item.title"
textWrap="true"
class="font-weight-bold"
color="#333333"
></Label>
<Label :text="item.color" color="#999999"></Label>
<Label :text="'USD ' + item.price" color="red"></Label>
</StackLayout>
<StackLayout orientation="horizontal" col="2" row="0">
<Button
text="-"
@tap="onDecriment(index)"
class="operatorButton operatorBox"
marginRight="0"
/>
<Label
class="operatorLabel operatorBox"
:text="item.quantity">
</Label>
<Button
text="+"
@tap="onIncrement(index)"
class="operatorButton operatorBox"
marginLeft="0"
/>
</StackLayout>
</GridLayout>
</v-template>
</ListView>
【问题讨论】:
【参考方案1】:我在您的代码中没有看到任何错误,但您可以尝试使用for
代替v-for
。我在this example 中看到,Listview
正在与for
一起使用。
根据文档:If a v-for is used on a <ListView> a warning will be printed to the console, and it will be converted to the **for** property.
您可以使用here 阅读有关Listview
的更多信息
<ListView
for="(item, index) in cartItems"
:key="index"
class="listCard"
>
....
【讨论】:
以上是关于Vue警告:属性或方法“item”未在实例上定义,但在渲染期间被引用的主要内容,如果未能解决你的问题,请参考以下文章
Vue警告]:属性或方法“选项”未在实例上定义,但在render.Vue js问题期间引用
为啥我看到 Vue 警告:“属性或方法“msg”未在实例上定义,但在渲染期间被引用...”
[Vue 警告]:属性或方法“游戏”未在实例上定义,但在渲染期间引用