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

网站建设会用什么软件网站怎么做优化

网站建设会用什么软件,网站怎么做优化,详情页模板免费商用,网页设计与制作100例论文隐式修改组件属性会导致功能异常 实际操作中发现,即便是父组件把简单数据通过prop传给了子组件,子组件再使用v-model绑定,也不行,响应式还是对异常 原vue2业务中存在组件定义某个类型为Object的属性,然后将该属性对象…

隐式修改组件属性会导致功能异常

实际操作中发现,即便是父组件把简单数据通过prop传给了子组件,子组件再使用v-model绑定,也不行,响应式还是对异常

原vue2业务中存在组件定义某个类型为Object的属性,然后将该属性对象的属性值绑定给​​v-model​​的用法,在此种场景会导致隐式修改组件属性,vue3中是禁止的,此种方式目前不报错,但是响应式不正确生效,功能会不正常。请修改掉。

例子一:

针对常规将props属性赋值给组件内如 ​​input​​​的​​v-model​​​,因​​v-model​​会双向修改值,形成修改属性,此场景推荐用如下方式,两者均可:

方式1修改:

// vue2 ,vue2中会警告但是能运行正常,vue3中无法正常运行
<el-input v-model="searchValue"/>
props:{searchValue:{type:String,default:""}
}
// vue3可用如下替代方案,
// compoentA.vue
<el-input v-model="searchValueLocal"/>
props:{searchValue:{type:String,default:""}
},
computed:{searchValueLocal:{get(){return this.searchValue;},set(val){this.$emit("update:searchValue",val) // 更新searchValue值}}
}
// compoentB.vue使用 compoentA.vue
<compoent-b v-model:search-value="text"/>
data(){return{text:''}
}

方式2修改
将​​v-model​​语法糖拆开

​​v-model​​语法糖本质是绑定​​modelValue​​,并绑定​​update:modelValue=val=>this.modelValue=val​​,导致形成属性修改,只要将语法糖拆开即可避免直接修改属性

// compoentA.vue
<el-input :model-value="modelValue" @update:model-value="handleSelectChange"/>
props:{modelValue:{type:String,default:""}
},
methods:{handleSelectChange(val){this.$emit('update:modelValue', val); // 值更新抛给父组件,由父组件来更新修改modelValue的值}
}

例子二:

如下代码:

1) 问题:定义了​​data​​​组件属性,但是将属性绑定给​​el-form​​​的​​model​​​属性,和各表单组件的​​v-model​​​;此时形成了隐式操作组件属性的问题,对于el-formmodel和各表单组件的​​v-model​​,无法形成响应式,会产生实际填写内容但是表单校验提示未输入内容,表单输入更新不及时的问题。

2) 解决:在组件内部直接修改属性的方式改掉,改成单向数据流或者在data中定义变量中转;同时注意,对于computed的计算属性(理论上是只读),也不能做值修改,会不触发响应式原理

<template><div class="label-form"><el-form :model="data" label-position="top" :rules="rules" ref="labelForm" label-width="10rem" @submit.prevent><el-form-item :label="$t('name')" prop="Name"><el-input @click.stop="focusTag" ref="tag" v-model="data.Name" v-input-permit.name :placeholder="$t('tag_name')"></el-input></el-form-item><el-form-item :label="$t('description')" prop="Describe"><el-inputtype="textarea"@click.stop="focusDesc"ref="desc":count="128":autosize="{ minRows: 2, maxRows: 4, maxWidth: 300 }"v-model="data.Describe"v-input-permit.name:placeholder="$t('description')"></el-input></el-form-item><el-form-item class="form-buttons"><el-button type="primary" @click="onSubmit">{{ $t('btn_save') }}</el-button></el-form-item></el-form></div>
</template><script>
import rules from '@/Common/service/rule/validate-rules';
export default {name: 'LabelForm',props: {data: {type: Object,default() {return {Name: '',Describe: ''};}}},emits: ['onSubmit'],data() {return {rules: {Name: [rules.required, rules.name],Describe: [rules.textareaDescription]}};},methods: {onSubmit() {this.$refs['labelForm'].validate(async (valid) => {if (valid) {this.emit('onSubmit', this.data);} else {this.$refs['labelForm'].focusFirstField();return false;}});},reset() {this.$refs['labelForm'].resetFields();},focusTag() {const inputDom = this.$refs.tag.$el.querySelector('input');inputDom.focus();},focusDesc() {const inputDom = this.$refs.desc.$el.querySelector('textarea');inputDom.focus();}}
};
</script>// ai帮改
<template><div class="label-form"><el-form :model="formData" label-position="top" :rules="rules" ref="labelForm" label-width="10rem" @submit.prevent><el-form-item :label="$t('name')" prop="Name"><el-input @click.stop="focusTag" ref="tagRef" v-model="formData.Name" v-input-permit.name :placeholder="$t('tag_name')"></el-input></el-form-item><el-form-item :label="$t('description')" prop="Describe"><el-inputtype="textarea"@click.stop="focusDesc"ref="descRef":count="128":autosize="{ minRows: 2, maxRows: 4 }"v-model="formData.Describe"v-input-permit.name:placeholder="$t('description')"></el-input></el-form-item><el-form-item class="form-buttons"><el-button type="primary" @click="onSubmit">{{ $t('btn_save') }}</el-button></el-form-item></el-form></div>
</template><script>
import { ref, reactive, onMounted } from 'vue';
import rules from '@/Common/service/rule/validate-rules';export default {name: 'LabelForm',props: {data: {type: Object,default() {return {Name: '',Describe: ''};}}},emits: ['onSubmit'],setup(props, { emit }) {const labelForm = ref(null);const tagRef = ref(null);const descRef = ref(null);const formData = reactive({ ...props.data });const rules = {Name: [rules.required, rules.name],Describe: [rules.textareaDescription]};const onSubmit = () => {labelForm.value.validate((valid) => {if (valid) {emit('onSubmit', formData);} else {labelForm.value.focusFirstField();return false;}});};const reset = () => {labelForm.value.resetFields();};const focusTag = () => {const inputDom = tagRef.value?.$el.querySelector('input');inputDom?.focus();};const focusDesc = () => {const inputDom = descRef.value?.$el.querySelector('textarea');inputDom?.focus();};return {labelForm,tagRef,descRef,formData,rules,onSubmit,reset,focusTag,focusDesc};}
};
</script>

文章转载自:

http://WlvvUkHX.mpsnb.cn
http://P7ID4yTL.mpsnb.cn
http://MyRchOrr.mpsnb.cn
http://E2CNLyYh.mpsnb.cn
http://OY3fmjMB.mpsnb.cn
http://8Jwe2xwY.mpsnb.cn
http://8nRFZnbe.mpsnb.cn
http://2AOOegsb.mpsnb.cn
http://H066glyU.mpsnb.cn
http://vpF9PFdb.mpsnb.cn
http://8KmKgB8Q.mpsnb.cn
http://IJGtJChB.mpsnb.cn
http://NX2oZNau.mpsnb.cn
http://O3vXcVR6.mpsnb.cn
http://GY8U76K4.mpsnb.cn
http://v5aPIap2.mpsnb.cn
http://reOKTYHS.mpsnb.cn
http://JtPE12Kq.mpsnb.cn
http://mnnw7RuX.mpsnb.cn
http://QjopJogy.mpsnb.cn
http://VTdpT4e1.mpsnb.cn
http://hFuVr0K7.mpsnb.cn
http://uI6cG4zW.mpsnb.cn
http://oTpDVBpe.mpsnb.cn
http://ni8N6aCm.mpsnb.cn
http://WBtg1KWt.mpsnb.cn
http://wPozyOeN.mpsnb.cn
http://6OIaWejd.mpsnb.cn
http://dRH5NufH.mpsnb.cn
http://HDoHLenR.mpsnb.cn
http://www.dtcms.com/wzjs/726171.html

相关文章:

  • 湖南省建设厅官网站旅游便宜的网站建设
  • 陆丰网站广州网站建设网站
  • 优化推广网站seo音乐网站样式设计
  • 怎么创建公司的个人网站做国外贸易哪个网站好
  • 各大网站图片wordpress的文件说明
  • 中小企业建网站注意中国建筑集团有限公司是国企吗
  • 咨询类网站开发的意义wordpress 标题
  • 俄文网站策划有0元开网店的吗
  • 手机网站模版更换技巧装饰设计风格
  • 一屏网站模板下载 迅雷下载 迅雷下载地址网络技术有限公司是干啥的
  • 小说网站自主建设盐城网盐城网站建设站建设
  • 增城免费网站建设定制开发网站的公司
  • 凡科网站网站建设进不去云南文山州
  • 鲜花网站建设目的有特效的网站
  • 新市区做网站wordpress 自定义翻页
  • 主流网站宽度wordpress 4.0
  • 怎么给公司免费做网站网站顶端大图怎么做
  • 个性化网站定制前端跟后端哪个就业难
  • 老板让我做网站负责人如何让百度抓取网站
  • 达人设计网官方网站网站修改标题
  • wordpress缓存插件破解版商丘seo
  • 千度网站哪个企业做网站
  • 建设工程造价员网站网站建设商标保护
  • 团购鲜花的网站建设海口网站建设品牌大全
  • 济南网站开发设计泰州网站制作工具
  • 建设济南公司网站如何注册公司名称
  • 国外做彩票网站推广是合法的吗wordpress响应速度太慢
  • 网站开发参数青海汽车网站建设
  • 想用自己电脑做服务器做个网站吗宁波市住房和城乡建设局网站
  • 修改网站的设计易雅达网站建设公司