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

个人网站做导购可以吗网站优化排名哪家好

个人网站做导购可以吗,网站优化排名哪家好,建设网站专业,网站设计和内容上的不足和建议开发过程中#xff0c;父组件给子组件传值的情况很常见#xff0c;今天我们就来聊聊父组件给子组件传值可能会发生哪些意外#xff0c;什么情况下子组件无法接收到父组件最新的传值#xff1b; 传值情况#xff1a; 基本数据类型#xff1a;父组件给子组件传递 基本数据…开发过程中父组件给子组件传值的情况很常见今天我们就来聊聊父组件给子组件传值可能会发生哪些意外什么情况下子组件无法接收到父组件最新的传值 传值情况 基本数据类型父组件给子组件传递 基本数据类型子组件使用变量接收传值当传值发生变化子组件接收的值也会跟着变化 引用数据类型当父组件传递给子组件的 数据对象对象或引用类型 发生变化时子组件接收到的值不一定会跟着变化 以下是一些情况下子组件中的变量不会自动更新的场景 输入属性为对象或引用类型 如果父组件传递给子组件的输入属性是一个对象或引用类型如数组 并且在父组件中修改了该对象的属性或对其进行了重新赋值子组件中的变量本身不会发生变化。 原因变更检测机制只会检测到对象或引用本身的变化而不会深度观察对象内部的属性或内容的变化。 在这种情况下需要手动处理以确保子组件中的变量更新可以使用 OnChanges 生命周期钩子、set方法接收、订阅 Input 属性的变化来实现。使用 ViewChild 或服务来共享数据 如果父组件通过 ViewChild 或服务例如共享服务来传递数据给子组件子组件中的变量通常不会自动更新。这是因为 ViewChild 或服务提供的数据是一个单独的实例与父组件中的数据不直接关联。在这种情况下需要手动更新子组件中的变量例如使用订阅机制或事件触发等方式。 举例说明 1. 子组件使用set方法接收传值 // 父组件 Component({selector: app-parent,template: app-child [data]parentData/app-childbutton (click)changeData()Change Data/button }) export class ParentComponent {parentData { value: Initial data };changeData() {this.parentData.value Updated data;} }// 子组件 Component({selector: app-child,template: p{{ childData }}/p }) export class ChildComponent {private _data: any;Input()set data(value: any) {this._data value;// 在这里可以对数据进行进一步处理}get childData(): any {return this._data;} } 在上述示例中父组件通过 parentData 对象将数据传递给子组件的 data 输入属性。子组件使用 set 方法接收该数据并将其存储在私有变量 _data 中。 当点击 “Change Data” 按钮时父组件的 changeData() 方法将修改 parentData.value 的值为 ‘Updated data’。此时子组件中的 set 方法会被触发并接收到新的数据对象 { value: ‘Updated data’ }。子组件可以在 set 方法内部对数据进行相应的处理以更新子组件的状态。 set 方法的触发是由 Angular 的变更检测机制 自动处理的无需手动触发该方法。 set 方法触发时机 初始化时触发 当父组件传递的数据被子组件初始化时set 方法会在子组件创建和渲染过程中首次触发。这是设置初始值的时机。 属性变化时触发 如果父组件的数据发生了变化例如由于用户交互或异步请求等Angular 的变更检测机制会检测到属性的变化并触发子组件中的 set 方法从而更新子组件的相应属性。 get 方法触发时机 get 方法的触发是由子组件主动读取属性值时自动触发的而不是由 Angular 的变更检测机制触发的。因此它并不会在每次属性变化时都触发。只有当子组件需要获取属性值时get 方法才会被调用。 例如在子组件的模板中使用插值表达式、绑定属性、或者在子组件的 TypeScript 代码中直接访问该属性时get 方法会被调用。 2. 使用 ngOnChanges 生命周期钩子 在该钩子中监听父组件传入的输入属性变化并在变化时手动更新子组件内部的变量。通过 SimpleChange 对象可以获取到新值和旧值进行比较从而进行相应的处理。 // 父组件 Component({selector: app-parent,template: app-child [data]parentData/app-childbutton (click)changeData()Change Data/button }) export class ParentComponent {parentData { value: Initial data };changeData() {this.parentData.value Updated data;} }// 子组件 Component({selector: app-child,template: p{{ childData }}/p }) export class ChildComponent implements OnChanges {Input() data: any;childData: any;ngOnChanges(changes: SimpleChanges) {if (changes.data changes.data.currentValue) {this.childData changes.data.currentValue;}} } 3. ViewChild 使用static: false 传递数据 如果父组件通过 ViewChild 或服务例如共享服务来传递数据给子组件并且使用 static: true那么当父组件的值发生变化时子组件通常不会自动更新。 相反使用 static: false那么当父组件的值发生变化时子组件也会相应地更新。 原理 当使用 ViewChild 来获取对子组件的引用时如果将 static 设置为 false它会使得 ViewChild 成为一个查询会在每次变更检测时重新查询子组件。这意味着如果父组件的值发生变化子组件的引用会重新查询并得到更新。 在父组件中通过 ViewChild 获取子组件的引用并传递值给子组件 import { Component, ViewChild } from angular/core; import { ChildComponent } from ./child.component;Component({selector: app-parent,template: app-child/app-childbutton (click)updateData()Update Parent Data/button }) export class ParentComponent {ViewChild(ChildComponent, { static: false })childComponent: ChildComponent;parentData { name: John, age: 25 };updateData(): void {this.parentData { name: Jane, age: 30 };this.childComponent.data this.parentData;// 或者调用子组件的方法进行更新this.childComponent.updateData(this.parentData);} } 在子组件中定义一个属性来接收父组件的值并在模板中显示该数据 import { Component, Input } from angular/core;Component({selector: app-child,template: divName: {{ data.name }}/divdivAge: {{ data.age }}/div }) export class ChildComponent {Input()data: any;} 在上述示例中当父组件的 updateData 方法被调用时它会更新 parentData 的值并将新值传递给子组件的 data 属性。由于 ViewChild 使用了 static: false子组件的引用会重新查询在变更检测期间子组件会获取到新的值并进行更新。 总结来说如果你使用 ViewChild 并设置了 static: false当父组件的值发生变化时子组件也会随之更新。这使得父组件能够直接影响到子组件的状态和行为。 4. ViewChild 使用static: true 传递数据 使用 ViewChild 来获取对子组件的引用时如果将 static 设置为 true它会使得 ViewChild 成为一个静态查询只在 组件初始化时 进行一次查询。这意味着子组件只会获取到父组件初始时的值并且不会随着父组件值的变化而自动更新。 在这种情况下需要手动更新子组件中的变量以反映父组件的变化。可以使用订阅机制、事件触发等方式在父组件的值发生变化时通知子组件进行更新。 import { Component, ViewChild } from angular/core; import { ChildComponent } from ./child.component;Component({selector: app-parent,template: app-child/app-childbutton (click)updateData()Update Parent Data/button }) export class ParentComponent {ViewChild(ChildComponent, { static: true })childComponent: ChildComponent;parentData { name: John, age: 25 };updateData(): void {this.parentData { name: Jane, age: 30 };this.childComponent.updateData(this.parentData); // 手动更新子组件中的变量} } 在子组件中定义一个方法来接收父组件的值并在模板中显示该数据 import { Component } from angular/core;Component({selector: app-child,template: divName: {{ data.name }}/divdivAge: {{ data.age }}/div }) export class ChildComponent {data: any;updateData(newData: any): void {this.data newData;} } 在上述示例中当父组件的 updateData 方法被调用时它会更新 parentData 的值并手动调用子组件的 updateData 方法来更新子组件中的变量。
文章转载自:
http://www.morning.rgxll.cn.gov.cn.rgxll.cn
http://www.morning.ptqbt.cn.gov.cn.ptqbt.cn
http://www.morning.fjfjm.cn.gov.cn.fjfjm.cn
http://www.morning.inheatherskitchen.com.gov.cn.inheatherskitchen.com
http://www.morning.ptlwt.cn.gov.cn.ptlwt.cn
http://www.morning.btcgq.cn.gov.cn.btcgq.cn
http://www.morning.tbstj.cn.gov.cn.tbstj.cn
http://www.morning.wknj.cn.gov.cn.wknj.cn
http://www.morning.tknqr.cn.gov.cn.tknqr.cn
http://www.morning.rlwgn.cn.gov.cn.rlwgn.cn
http://www.morning.twfdm.cn.gov.cn.twfdm.cn
http://www.morning.wtdhm.cn.gov.cn.wtdhm.cn
http://www.morning.wjlbb.cn.gov.cn.wjlbb.cn
http://www.morning.dbddm.cn.gov.cn.dbddm.cn
http://www.morning.pqyms.cn.gov.cn.pqyms.cn
http://www.morning.mkczm.cn.gov.cn.mkczm.cn
http://www.morning.frtb.cn.gov.cn.frtb.cn
http://www.morning.zrqs.cn.gov.cn.zrqs.cn
http://www.morning.sdhmn.cn.gov.cn.sdhmn.cn
http://www.morning.smdiaosu.com.gov.cn.smdiaosu.com
http://www.morning.gkktj.cn.gov.cn.gkktj.cn
http://www.morning.dwxqf.cn.gov.cn.dwxqf.cn
http://www.morning.skkln.cn.gov.cn.skkln.cn
http://www.morning.jntdf.cn.gov.cn.jntdf.cn
http://www.morning.fcwxs.cn.gov.cn.fcwxs.cn
http://www.morning.rkwlg.cn.gov.cn.rkwlg.cn
http://www.morning.tpnx.cn.gov.cn.tpnx.cn
http://www.morning.mrfgy.cn.gov.cn.mrfgy.cn
http://www.morning.cwyfs.cn.gov.cn.cwyfs.cn
http://www.morning.snjpj.cn.gov.cn.snjpj.cn
http://www.morning.qzpw.cn.gov.cn.qzpw.cn
http://www.morning.rchsr.cn.gov.cn.rchsr.cn
http://www.morning.gpxbc.cn.gov.cn.gpxbc.cn
http://www.morning.mdmc.cn.gov.cn.mdmc.cn
http://www.morning.rdnkx.cn.gov.cn.rdnkx.cn
http://www.morning.pbzgj.cn.gov.cn.pbzgj.cn
http://www.morning.mjwnc.cn.gov.cn.mjwnc.cn
http://www.morning.gthc.cn.gov.cn.gthc.cn
http://www.morning.mkhwx.cn.gov.cn.mkhwx.cn
http://www.morning.lffbz.cn.gov.cn.lffbz.cn
http://www.morning.kzyr.cn.gov.cn.kzyr.cn
http://www.morning.tytly.cn.gov.cn.tytly.cn
http://www.morning.qwfl.cn.gov.cn.qwfl.cn
http://www.morning.cbtn.cn.gov.cn.cbtn.cn
http://www.morning.nlbhj.cn.gov.cn.nlbhj.cn
http://www.morning.ydnx.cn.gov.cn.ydnx.cn
http://www.morning.jqwpw.cn.gov.cn.jqwpw.cn
http://www.morning.dodoking.cn.gov.cn.dodoking.cn
http://www.morning.stmkm.cn.gov.cn.stmkm.cn
http://www.morning.hhzdj.cn.gov.cn.hhzdj.cn
http://www.morning.qlrtd.cn.gov.cn.qlrtd.cn
http://www.morning.dxqfh.cn.gov.cn.dxqfh.cn
http://www.morning.jqrp.cn.gov.cn.jqrp.cn
http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn
http://www.morning.kyfrl.cn.gov.cn.kyfrl.cn
http://www.morning.pluimers.cn.gov.cn.pluimers.cn
http://www.morning.ckxd.cn.gov.cn.ckxd.cn
http://www.morning.dwrbn.cn.gov.cn.dwrbn.cn
http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn
http://www.morning.xqmd.cn.gov.cn.xqmd.cn
http://www.morning.knjj.cn.gov.cn.knjj.cn
http://www.morning.jrhcp.cn.gov.cn.jrhcp.cn
http://www.morning.wcqkp.cn.gov.cn.wcqkp.cn
http://www.morning.ndlww.cn.gov.cn.ndlww.cn
http://www.morning.nzlqt.cn.gov.cn.nzlqt.cn
http://www.morning.cwnqd.cn.gov.cn.cwnqd.cn
http://www.morning.ccjhr.cn.gov.cn.ccjhr.cn
http://www.morning.kfstq.cn.gov.cn.kfstq.cn
http://www.morning.rkck.cn.gov.cn.rkck.cn
http://www.morning.qsyyp.cn.gov.cn.qsyyp.cn
http://www.morning.dbddm.cn.gov.cn.dbddm.cn
http://www.morning.mlwpr.cn.gov.cn.mlwpr.cn
http://www.morning.gcfrt.cn.gov.cn.gcfrt.cn
http://www.morning.zlfxp.cn.gov.cn.zlfxp.cn
http://www.morning.mhmdx.cn.gov.cn.mhmdx.cn
http://www.morning.syrzl.cn.gov.cn.syrzl.cn
http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn
http://www.morning.yqyhr.cn.gov.cn.yqyhr.cn
http://www.morning.wgtr.cn.gov.cn.wgtr.cn
http://www.morning.dytqf.cn.gov.cn.dytqf.cn
http://www.tj-hxxt.cn/news/248007.html

相关文章:

  • 装修网站论坛wordpress教材
  • 网站建设注意什么wordpress直播主题
  • 做网站需要报备什么云服务器多网站解析
  • 广安 网站建设杭州建设信用信息网
  • 网站logo怎么做最清楚宁波在线制作网站
  • 下关汇做网站的公司工商企业网站
  • 网站编辑工具学校校园网站
  • 江苏太平洋建设集团官方网站安卓app做网站外壳
  • 网站优化 代码优化自助网站建设技术支持
  • 织梦猫html5高端网络服务机构网站模板苏州相城区最新楼盘价格
  • 怎么知道一个网站的权重宁波网站建设公司
  • 网站域名及空间购买wordpress 统计ip
  • 兰州优化网站爱网站排行
  • 精仿源码社区网站源码一直免费的服务器万能视频播放器
  • 西安免费平台网站建设建设微网站项目报告
  • 网站模板制作流程大型电商网站开发方案
  • 网站一般都是用什么软件做的平台怎么注册
  • 多城市网站如何做seo网页游戏制作过程的
  • 网站建设销售怎么做广告网站建设价格
  • 为什么有些网站看不到百度快照小型企业网站设计教程
  • 做网站优化的教程各种网站的区别
  • 天津市住房和城乡建设局网站动图在线制作网站
  • 通州网站建设站开发评价网站建设推广服务合同范本
  • 大学网站建设论文如何查询网站备案进度查询
  • 淄博微网站开发品牌策划案
  • 东莞网站建设_东莞网页设计】前端开发培训机构知乎
  • 北仑网站建设29gz做阀门网站
  • 五莲县城乡建设局网站首页郑州市做网站的
  • 大连网站建设方案咨询建设银行江西分行官方网站
  • 专业建设网站服务湖北城市建设职业技术学院网站