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

公司高端网站建设比较好的网络优化公司

公司高端网站建设,比较好的网络优化公司,佛山个性化网站开发,免费模板建站网站文章目录 父组件中 <ave-form> 的使用add 模式下触发逻辑value 的传入情况是否触发 getProducts()&#xff1f; 验证 add 模式下 getProducts() 是否触发结论&#xff1a; 检查父组件传入 value 的完整情况如何明确知道父组件传入的 value最终回答 父组件 index.vue子组件…

文章目录

      • 父组件中 `<ave-form>` 的使用
      • `add` 模式下触发逻辑
        • `value` 的传入情况
        • 是否触发 `getProducts()`?
      • 验证 `add` 模式下 `getProducts()` 是否触发
        • 结论:
      • 检查父组件传入 `value` 的完整情况
      • 如何明确知道父组件传入的 `value`
      • 最终回答

  • 父组件 index.vue
  • 子组件 ave-form.vue

父组件的代码(src/views/tools/fake-strategy/index.vue)。现在我可以准确分析父组件如何传入 value<ave-form> 组件,尤其是在 add 模式下。以下是详细的分析和回答:


父组件中 <ave-form> 的使用

在父组件的模板中,<ave-form> 是这样定义的:

<ave-form:clist="clist.admins":value="aveForm":visible="aveFormVis":operate-type="operateType"@close="onAveFormClose"
/>
  • :value="aveForm"value 属性绑定到父组件的数据属性 aveForm
  • :operate-type="operateType":操作模式由 operateType 控制。
  • :visible="aveFormVis":控制对话框的显示。

关键点在于:value 的值取决于 aveForm 的内容,而 aveForm 在不同情况下会发生变化。我们需要检查 add 模式下 aveForm 的赋值逻辑。


add 模式下触发逻辑

在父组件中,handleAdd() 方法用于打开 add 模式的对话框:

public handleAdd() {this.aveForm = Object.assign({}, {});this.aveFormVis = true;this.operateType = 'add';
}
  • 赋值this.aveForm = Object.assign({}, {})aveForm 设置为一个新的空对象 {}
  • 显示对话框this.aveFormVis = true 打开 <ave-form>
  • 模式this.operateType = 'add' 设置为 add 模式。
value 的传入情况
  • 初始值
    • aveForm 在组件初始化时定义为:
      public aveForm: any = {};
      
      这意味着 <ave-form>value 默认是一个空对象 {}
  • 调用 handleAdd()
    • this.aveForm = Object.assign({}, {}) 重新将 aveForm 赋值为一个新的空对象 {}
    • 这看起来与初始值相同,但由于它是新对象,会触发 Vue 的响应式更新。
是否触发 getProducts()

现在回到子组件(ave-form.vue)的逻辑:

@Prop({ default: () => {} })
private value?: any;@Watch('value')
watchValue(v: any) {this.$nextTick(() => {this.getProducts();const formData = { ...v, /* ... */ };this.form = formData;});
}
  • 初次挂载

    • <ave-form> 组件初次挂载时,valueundefined 变为默认值 {}
    • 但注意:Vue 的 @Watch 默认不会对初始值触发,仅对后续变化生效,除非设置 immediate: true(当前代码未设置)。
    • 因此,组件挂载时 getProducts() 不会触发
  • 调用 handleAdd()

    • this.aveForm{}(旧对象)变为 {}(新对象)。
    • 虽然值看起来相同,但因为 Object.assign({}, {}) 创建了一个新对象(不同的引用),Vue 会检测到变化。
    • 这会触发 @Watch('value'),从而调用 getProducts()

验证 add 模式下 getProducts() 是否触发

  1. 父组件行为

    • handleAdd() 被调用时(用户点击“登记”按钮),aveForm 被赋值为新空对象。
    • <ave-form>value 从旧的 {} 变为新的 {},触发 Watcher。
  2. 子组件反应

    • @Watch('value') 检测到 value 引用变化,执行 watchValue
    • this.getProducts() 被调用。
结论:

add 模式下,当用户点击“登记”按钮调用 handleAdd() 时,getProducts() 会被触发,因为 aveForm 的重新赋值导致 value 的引用发生变化。


检查父组件传入 value 的完整情况

让我们进一步确认父组件中 aveForm 的其他使用情况,确保没有遗漏:

  1. 初始值

    public aveForm: any = {};
    
    • 默认是一个空对象。
  2. 其他修改 aveForm 的地方

    • onEdit(row)
      public async onEdit(row: any) {this.aveForm = Object.assign({}, row);this.operateType = 'edit';this.aveFormVis = true;
      }
      
      • edit 模式下,aveForm 被赋值为表格行的副本。
    • handleView(row)
      public async handleView(row: any) {this.aveForm = { ...row };this.operateType = 'view';this.aveFormVis = true;
      }
      
      • view 模式下,aveForm 被赋值为表格行的副本。
    • onOpenStatus(row)
      public onOpenStatus(row: any) {this.aveForm = { ...row, cooperateStatus: row.cooperateStatus || 0, value: row.value || 0 };this.operateType = 'edit';this.cstatusVisible = true;
      }
      
      • 涉及其他状态,但不直接影响 <ave-form> 的主逻辑。
  3. add 模式的特殊性

    • 只有 handleAdd() 是明确为 add 模式准备的,且 aveForm 被设置为 {}
    • 对比 editviewadd 模式下 aveForm 是空的,而其他模式会传入已有数据。

如何明确知道父组件传入的 value

按照你之前的提问,我提供具体步骤验证 value 的传入情况:

  1. 在子组件中添加日志
    修改 ave-form.vue

    @Watch('value')
    watchValue(v: any) {console.log('add 模式下 value:', v, 'operateType:', this.operateType);this.$nextTick(() => {this.getProducts();const formData = { ...v, /* ... */ };this.form = formData;});
    }mounted() {console.log('组件挂载时 value:', this.value, 'operateType:', this.operateType);
    }
    
    • 点击“登记”按钮后,观察控制台:
      • 如果输出 add 模式下 value: {} operateType: add,确认 value 是空对象,且 getProducts() 被调用。
  2. 在父组件中添加日志
    修改 handleAdd()

    public handleAdd() {this.aveForm = Object.assign({}, {});console.log('传入 ave-form 的 value:', this.aveForm);this.aveFormVis = true;this.operateType = 'add';
    }
    
    • 输出:传入 ave-form 的 value: {}
  3. 使用 Vue Devtools

    • 打开浏览器开发者工具,切换到 Vue 面板。
    • 找到 <ave-form>,检查 Props 中的 value
      • add 模式下,应该是 {}

最终回答

  • 父组件传入 value 的情况
    • add 模式下,父组件通过 handleAdd()aveForm 设置为一个新的空对象 {},并传递给 <ave-form>value
  • 是否触发 getProducts()
    • 会触发,因为 aveForm 从旧的 {} 变为新的 {}(引用变化),触发了 @Watch('value')
  • 验证方法
    • 在子组件用 console.log 检查 valueoperateType
    • 在父组件打印 aveForm
    • 用 Vue Devtools 查看 <ave-form> 的实时 Props。

在这里插入图片描述

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

相关文章:

  • 网站建设建站国内可访问的海外网站和应用
  • 平台网站怎么做的好搜索引擎网站提交入口
  • 超大型网站建设百度广告收费表
  • 自己做网站做那种类型怎么能在百度上做推广
  • 网站建设首页包括什么seo网站排名推广
  • 昆明建企业网站多少钱百度搜索风云榜排行榜
  • 汉中北京网站建设中国域名注册官网
  • wordpress响应式模版优化网站建设seo
  • 专门做外卖的网站网络营销产品
  • 做哪个网站好如何搭建一个自己的网站
  • 安阳网站建设开发网站在线推广
  • 重庆网站设计人员做国外网站
  • 投标文件网站开发技术部分快速提高关键词排名的软件
  • 做简历好的网站seo网站优化软件
  • 西安市网站建设公司备案域名购买
  • 免费做简历的网站企业邮箱网页版
  • 您在工信部门备案网站获取的icp备案号网络互联网推广
  • 效果好企业营销型网站建设开发seo软件服务
  • 微网站购物网站关键词搜索趋势
  • 相亲网站男人拉我做外汇指数工具
  • 社区类网站开发谷歌优化
  • 西安做政府网站的公司百度识图网页版入口
  • 构建微网站渠道推广平台
  • 微信网站建设电话英语培训机构
  • 企业网站 下载免费建设网站平台
  • 做网站怎么跟客户谈话知名的seo快速排名多少钱
  • 做简历用哪个网站什么是百度竞价排名
  • 在centos做网站运营seo是什么意思
  • 南充网站建设狐灵网络百度游戏app下载
  • 杭州精品网站建设公司百度灰色关键词排名