javascript - [Vue 警告]:渲染错误:“RangeError: Invalid array length”[Vue JS]
问题描述
我正在尝试使用此处提供的 vue.js 扑克示例示例 - https://codepen.io/Rovak/pen/ExYeQar HTML 看起来像
<div class="card-place">
<card v-for="(card, index) in tableCards" :card="card"></card>
</div>
Vue JS 的初始数据看起来像
let app = new Vue({
el: '.vue-container',
data: {
player_playing: 0,
playerCards: [],
tableCards: [],
players: [],.....},...
})
最初tableCards
是空的,每当我通过 websockets 接收数据时,我都会tableCards
使用以下方法更新
function placeTableCards(cardsOnTable) {
app.tableCards = cardsOnTable
}
其中cardsOnTable 是一个卡片对象数组。
更新时出现如下错误
vue.js:1897 RangeError: Invalid array length
我对 VueJS 非常陌生,并且坚持了很长时间。任何帮助将不胜感激。如果您需要我提供更多数据,请告诉我。
解决方案
这感觉像是一个反应性错误。
您正在尝试onload
遍历其中没有任何内容的数组。它为空。
您想要做的是将您的 for 循环包装在 if 语句中,以确保它仅在数据实际存在时运行:
<div class="card-place" v-if="tableCards">
<card v-for="(card, index) in tableCards" :card="card"></card>
</div>
或者你可以TableCards
用其中的一些东西来初始化你的,但是最好使用 vueJs 的反应引擎。
一旦 placeTableCards() 运行,Vuejs 应该接受数据更改,if 语句将通过 true,并且您的循环应该执行。
推荐阅读
- python - 我正在尝试遍历熊猫系列字典(通过 API 获得),我想将它们拆分为数据框中的绝望系列
- c - UDP 打孔正在与 google colab 合作,但不适用于其他本地 nat
- javascript - 如何在 VBA Selenium 中正确使用 ExecuteASyncScript?
- java - Android Camera2 API 图像色彩空间
- visual-studio-code - 如何将 VSCode 扩展中的文件复制到工作区?
- python - 为什么即使我将级别设置为警告,我的 python 程序仍会写入调试级别日志?
- javascript - 为什么在 setState 中通过渲染运行 onClick 函数?
- xamarin - Xamarin 动画 ViewAnimations 不起作用
- c++ - 可变模板张量类
- c - 如何根据c中另一个循环的计数器编写一个循环n次的循环