当前位置: 首页 > wzjs >正文

镇江网站建设门户报价上海关键词优化按天计费

镇江网站建设门户报价,上海关键词优化按天计费,中国的网站域名,山西专业网站建设价目[TOC](vue2 插值语法中使用可选链运算符(.?)compile异常排查思路) 前言 最近接到组内前端求助&#xff0c;在使用v-for进行动态渲染的时候项目突然不能正常编译了&#xff0c;报错提示SyntaxError: Unexpected token ...十分奇怪 代码可参考如下&#xff1a; <h3>动态…

@[TOC](vue2 插值语法中使用可选链运算符(.?)compile异常排查思路)

前言

最近接到组内前端求助,在使用v-for进行动态渲染的时候项目突然不能正常编译了,报错提示SyntaxError: Unexpected token ...十分奇怪
在这里插入图片描述
代码可参考如下:

      <h3>动态渲染内容</h3><el-row v-for="(item, index) in form.subObjList" :key="index" :gutter="12" :style="{ background: '#edfced' }"><el-col> {{item?.projectNameLabel}}:{{item?.projectName}}</el-col><el-col> {{item?.technicalPointLabel}}:{{item?.technicalPoint}}</el-col><el-col> {{item?.mainFunctionLabel}}:主要功能:{{item?.mainFunction}}</el-col><el-col> {{item?.difficultyLabel}}:{{item?.difficulty}}</el-col><el-col><hr></el-col></el-row>

待渲染的数据

      this.form.subObjList = [{ projectNameLabel: '项目名称',projectName: 'xx项目前端',technicalPointLabel: '技术点',technicalPoint: 'vue vuex vue-router js',mainFunctionLabel: '主要功能',mainFunction: '前端交互ux整改,完善用户体验',difficultyLabel: '难点',difficulty: '大批量数据渲染'},{ projectNameLabel: '项目名称',projectName: 'xx项目后端',technicalPointLabel: '技术点',technicalPoint: 'springboot mybatis redis pgsql',mainFunctionLabel: '主要功能',mainFunction: '支持用户的特定业务流程',difficultyLabel: '难点',difficulty: '大批量数据校验'}]

排查思路

把新增的代码区域el-row以及内部el-col注释掉,重新加载检查编译情况,这时能成功编译
接着在放开el-row新增自定义el-col,重新加载检查编译情况,能够成功编译和渲染

      <h3>动态渲染内容</h3><el-row v-for="(item, index) in form.subObjList" :key="index" :gutter="12" :style="{ background: '#edfced' }"><el-col>heheda</el-col>
<!--        <el-col> {{item?.projectNameLabel}}:{{item?.projectName}}</el-col>-->
<!--        <el-col> {{item?.technicalPointLabel}}:{{item?.technicalPoint}}</el-col>-->
<!--        <el-col> {{item?.mainFunctionLabel}}:主要功能:{{item?.mainFunction}}</el-col>-->
<!--        <el-col> {{item?.difficultyLabel}}:{{item?.difficulty}}</el-col>-->
<!--        <el-col><hr></el-col>--></el-row>

在这里插入图片描述
观察到插值语法中的可选链运算符(.?)比较怪,于是选取一个el-col去掉.?并放开注释,可以正常渲染
在这里插入图片描述
再次加上.?,重现了编译失败
在这里插入图片描述
由此可以确认是在插值语法中使用可选链运算符(.?)引起的

临时解决措施

去掉可选链运算符(.?),与前端确认,此处动态渲染的数据需请求接口得到,item的属性没有在data()中申明,所以使用(.?)来避免一些潜在的问题

后续

处理完这个问题后,计划在个人PC上复现,但是并没有复现成功(环境为vue 3.4.28 & node 18.20.4
),经过搜查发现该问题会在vue2低版本上出现,此时相应的node.js版本不支持在插值语法中使用可选链运算符,于是搭建了(vue 2.6.10 & node 14.16),确实成功复现了这个问题。求助的项目vue版本为2.5.x,考虑到不久后该项目就会升级vue 3,所以没有深究如何在vue 2中实现插值语法可以使用可选链运算符号。
此处分享在vue3中该案例的完整代码:

<template><div><h3>Welcome</h3><el-form :model="form" label-width="100px"><el-row :gutter="20"><el-col :span="12"><el-form-item label="姓名"><el-input v-model="form.name"></el-input></el-form-item></el-col><el-col :span="12"><el-form-item label="年龄"><el-input v-model="form.age"></el-input></el-form-item></el-col></el-row><el-row :gutter="20"><el-col :span="8"><el-form-item label="地址"><el-input v-model="form.address"></el-input></el-form-item></el-col></el-row><h3>动态渲染内容</h3><el-row v-for="(item, index) in form.subObjList" :key="index" :gutter="12" :style="{ background: '#edfced' }"><el-col> {{item?.projectNameLabel}}:{{item?.projectName}}</el-col><el-col> {{item?.technicalPointLabel}}:{{item?.technicalPoint}}</el-col><el-col> {{item?.mainFunctionLabel}}:主要功能:{{item?.mainFunction}}</el-col><el-col> {{item?.difficultyLabel}}:{{item?.difficulty}}</el-col><el-col><hr></el-col></el-row></el-form><button @click="setRenderInfo">动态渲染赋值</button><button @click="clearRenderInfo">动态渲染清空</button></div>
</template><!--vue3写法-->
<!--<script setup lang="ts" name="About">
import { reactive, ref } from 'vue'
import type { ComponentSize, FormProps } from 'element-plus'let form = {name: '松树戈',age: '66',address: '这里',secondLabel: '我就是第二个标题',subObjList: []}
// 模拟远程请求后对subObjList进行赋值
form.subObjList = [{ projectNameLabel: '项目名称',projectName: 'xx项目前端',technicalPointLabel: '技术点',technicalPoint: 'vue vuex vue-router js',mainFunctionLabel: '主要功能',mainFunction: '前端交互ux整改,完善用户体验',difficultyLabel: '难点',difficulty: '大批量数据渲染'},{ projectNameLabel: '项目名称',projectName: 'xx项目后端',technicalPointLabel: '技术点',technicalPoint: 'springboot mybatis redis pgsql',mainFunctionLabel: '主要功能',mainFunction: '支持用户的特定业务流程',difficultyLabel: '难点',difficulty: '大批量数据校验'}
]
</script>-->
<!--vue2写法-->
<script>export default {data() {return {form: {name: '松树戈',age: '66',address: '这里',secondLabel: '我就是第二个标题',subObjList: []}}},mounted() {console.log('在-mounted内部')},methods: {setRenderInfo() {this.form.subObjList = [{ projectNameLabel: '项目名称',projectName: 'xx项目前端',technicalPointLabel: '技术点',technicalPoint: 'vue vuex vue-router js',mainFunctionLabel: '主要功能',mainFunction: '前端交互ux整改,完善用户体验',difficultyLabel: '难点',difficulty: '大批量数据渲染'},{ projectNameLabel: '项目名称',projectName: 'xx项目后端',technicalPointLabel: '技术点',technicalPoint: 'springboot mybatis redis pgsql',mainFunctionLabel: '主要功能',mainFunction: '支持用户的特定业务流程',difficultyLabel: '难点',difficulty: '大批量数据校验'}]},clearRenderInfo() {this.form.subObjList = []}}}
</script>
<style scoped>
.about {display: flex;justify-content: center;align-items: center;height: 100%;color: rgb(85, 84, 84);font-size: 18px;
}
</style>

demo项目完整代码:

码云
gitehub

http://www.dtcms.com/wzjs/419988.html

相关文章:

  • 有什么网站可以做初中试题宁德市房价
  • 如何保护网站模板外贸网站制作公司哪家好
  • 东莞做企业网站品牌推广策划营销策划
  • 设计开发网站纹身网站设计
  • 做PPT参考图片网站 知乎百度学术官网论文查重免费
  • 有哪些可以在网上做兼职的网站怎样制作网页新手自学入门
  • 河南建设安全协会网站扫图片识别图片原图
  • 免费做游戏小程序的网站360搜索指数
  • 临沂市建设局网站公示关键词生成器 在线
  • 如何做1个手机网站西安百度爱采购推广
  • 中铁建设集团有限公司招标网长沙正规竞价优化服务
  • 卫生室可以做网站吗百度热搜关键词排名
  • 重庆做商城网站设计电子商务主要学什么就业方向
  • 许昌做网站公司专业做网站哪家好游戏优化是什么意思
  • 兰西网站建设乔拓云网站建设
  • wordpress 小说站360搜索关键词优化软件
  • 网站建设高端培训上海优化网站seo公司
  • 微信显示个人网站搜一搜搜索
  • 重庆网站托管外包公司哪家好网站制作策划书
  • 百度公司做网站服务常用的seo查询工具
  • 北京做公司网站网站出租三级域名费用
  • 外部网站可以做链接到淘宝吗深圳大鹏新区葵涌街道
  • 做软件外包的网站最成功的网络营销案例
  • 西安建筑人才网深圳网站seo优化公司
  • 做课题的网站有多少是备案的如何创建自己的卡网
  • 网站开发相关期刊免费推广渠道有哪些
  • 美食网站建设日程表seo一个月工资一般多少
  • 微信公众号搭建网站手机app软件开发
  • 如何做挂qq的网站yandex搜索引擎
  • 做网站职校选什么专业淘宝seo优化是什么