微信小程序父子组件传值

àì夳堔傛蜴生んèń 2022-11-15 12:22 365阅读 0赞

父传子

  1. 小程序的父组件可以是page类型,也可以是component类型,子组件一定是component类型。
  2. <!-- 父组件 -->
  3. <view class="container">
  4. 我是父组件
  5. <child parent="{ {parent}}"></child>
  6. </view>
  7. <!-- 子组件 -->
  8. <view class="child">我是子组件
  9. <view class="parent-value">{
  10. {parent}}</view>
  11. </view>
  12. // 父组件
  13. Page({
  14. /** * 页面的初始数据 */
  15. data: {
  16. parent: '我是父组件的值'
  17. }
  18. })
  19. // 子组件
  20. Component({
  21. /** * 组件的属性列表 * 父组件传过来的值 */
  22. properties: {
  23. parent: {
  24. type: String, // 类型
  25. value: '' // 默认值
  26. }
  27. }
  28. })

效果

在这里插入图片描述

子传父

  1. 子传父一般需要通过触发事件。
  2. <!-- 父组件 -->
  3. <view class="container">
  4. 我是父组件
  5. <view hidden="{ {show}}" class="child-change">父组件的元素</view>
  6. <child parent="{ {parent}}" bind:changeShow="changeShow"></child>
  7. </view>
  8. <!-- 子组件 -->
  9. <view class="child">我是子组件
  10. <button class="child-btn" bindtap="change">{
  11. {btnText}}</button>
  12. </view>
  13. // 父组件
  14. Page({
  15. /** * 页面的初始数据 */
  16. data: {
  17. show: false
  18. },
  19. changeShow(e) {
  20. // e.detail里面存放了子组件传过来的值
  21. this.setData({
  22. show: e.detail.show
  23. })
  24. }
  25. })
  26. // 子组件
  27. Component({
  28. /** * 组件的初始数据 */
  29. data: {
  30. // 按钮文字
  31. btnText: '隐藏父组件元素',
  32. type: 1
  33. },
  34. /** * 组件的方法列表 */
  35. methods: {
  36. change() {
  37. if(this.data.type === 1) {
  38. this.setData({
  39. type: 2,
  40. btnText: '显示父组件元素'
  41. })
  42. // 向父组件传递事件,传值必须为对象形式
  43. this.triggerEvent('changeShow', { show: true});
  44. }else {
  45. this.setData({
  46. type: 1,
  47. btnText: '隐藏父组件元素'
  48. })
  49. this.triggerEvent('changeShow', { show: false});
  50. }
  51. }
  52. }
  53. })

效果

在这里插入图片描述

参考文档:
组件间通信与事件 | 微信开放文档

发表评论

表情:
评论列表 (有 0 条评论,365人围观)

还没有评论,来说两句吧...

相关阅读