[鸿蒙]鸿蒙开发之组件(二):Props
在上一篇博客文章中简单地提到了 Props 。
在使用 Props 时需要注意到一个点,子组件从寄主页面传递过来的值是单向的,也就是子组件不能直接修改传递下来的值,即单向性。
以上篇文章定义的头像组件为例,我希望点击头像之后,头像的地址会发生改变。
export default {
props: {
imgSrc: {
default: 'https://pic.cnblogs.com/avatar/2271881/20210617130249.png'
}
},
changeImgSrc() {
this.imgSrc = 'https://img1.baidu.com/it/u=1723224959,3151955398&fm=26&fmt=auto'
}
}
!注意:props 和 data 的属性一样都以
this
来指向。
改造好之后,我们来看看实际效果如何:
通过视频可以发现,点击之后没有任何效果,这就是 Props 的单向性。
如果子组件要修改 Props,必须要把 Prop 传递给 data 中的属性:
export default {
data() {
return {
// 1. 把 imgSrc 传递给 _imgSrc
_imgSrc: this.imgSrc
}
},
// 2. 然后就可以改变从寄主页面传递过来的值
changeImgSrc() {
this._imgSrc = 'https://img1.baidu.com/it/u=1723224959,3151955398&fm=26&fmt=auto'
}
}
并且,也要修改组件的 image 标签 src 属性引用的值为 data 中的属性:
!注意:这里将原本的
src="{{imgSrc}}"
改为了src="{{src}}"
。
将传入的值用 data 的属性来接收,并将其作为默认值,再对 data 的属性进行修改。