微信小程序笔记(四)Wepy使用记录—使用组件

Wepy使用记录—使用组件

  在wepy中可已使用原生小程序自定义组件,也可已使用wepy组件,使用上稍有区别。

1.使用原生方式的自定义组件

  这里引用的是vant小程序组件(这里不用纠结第三方还是自定义,因为这种组件库都是按照小程序自定义组件标准去写的),用vant不用iview原因是,iview编译有报错看着不舒服,但是不影响使用。
在这里插入图片描述
  因为引用的是自定义标题栏,所以会看着不太明显。所以这里对界面简单的修改了一下。
在这里插入图片描述
  该界面具体代码如下:

<style lang="stylus">
  @import "../css/base.styl"

  page
    width match_parent
    height match_parent

  .topBar
    background-color theme-color
  .topBar .titleGroup
    background-color theme-color
  .topBar .title
    color white

  .center
    display flex
    width match_parent
    height match_parent
    justify-content center
    align-items center
    background-color #3f71ed
    color white
    font-weight bold
    font-size size(50)

</style>

<template>
  <view class="topBar" style="padding-top: {{statusBarHeight}}rpx">
    <van-nav-bar title="测试页" custom-class="titleGroup" title-class="title"/>
  </view>

  <view class="center">
      使用小程序原生组件
  </view>
</template>

<script>
  import wepy from 'wepy';
  export default class Index extends wepy.page {
    config = {
      navigationStyle: 'custom',
      navigationBarTextStyle: 'white',
      usingComponents: {
        'van-nav-bar': '../component/vant/nav-bar/index'
      }
    };
    data = {
      statusBarHeight : 0
    };
    onLoad() {
      wx.getSystemInfo({ success: e => this.statusBarHeight = e.statusBarHeight});
    }
  }
</script>

  base.styl样式文件中的代码如下:

theme-color = #6caac1
match_parent = 100%

size(value){
  return unit(value,rpx)
}

2.使用wepy组件

  wepy组件的创建和引用还是非常简单的。首先先创建一个组件如:test.wpy。代码如下:

<template>
    <view>自定义wepy组件</view>
</template>
<script>
  import wepy from 'wepy';

  export default class Test extends wepy.component {
    props = {};
    data = {};
    methods = {};
  }
</script>

<style lang="stylus">

</style>

  这样就定义完一个组件。随后在要使用这个组件的界面中去进行配置。(图中“key相当于组件的id”请参考wepy官方文档组件说明
在这里插入图片描述
  使用组件时,直接将components对象中的key当标签使用即可。
在这里插入图片描述
  运行效果如下图:
在这里插入图片描述

3.使用wepy属性传值——传值

  属性传值使用props,其实使用起来跟原生小程序组件属性传值差别不大(跟vue的props传值相比,说实话只是长的很像而已)。接下来修改下test组件,还是看图比较直观。
在这里插入图片描述
  回到index.wpy中,设置属性值。其实这里这样写<test :text="testText"/><test text="属性传值"/>这样写没啥缺别,因为都是设死的。
在这里插入图片描述

4.使用wepy属性传值——动态修改属性值

  为什么说<test :text="testText"/><test text="属性传值"/>这两种写法没有区别。因为当testText变量发生改变后,界面不会刷新。接下来修改下index.wpy界面,在界面中添加一个按钮,当点击按钮后修改testText变量的值。代码截图如下所示:
在这里插入图片描述
  耳听为虚眼见为实,下图完美的展示了之前所描述的问题。
在这里插入图片描述
  其实这并不是什么问题,只需要在属性后面加上.sync就可以了。也就是这个样子<test :text.sync="testText"/>(官方文档都有说明,只不过就是没有效果,都得自己实验一下才能理解)。
在这里插入图片描述

5.使用wepy组件通信——父向子传值

  父组件向子组件传值目前有两种方式:$broadcast$invoke。(组件通信与交互官方文档说明

$broadcast

  简单点说就是群发。只不过是给当前父组件中每个子组件发。方正就是发了,接不接就看子组件的需求了。这里为了看效果先改写一下test组件。
在这里插入图片描述
  然后再到index界面里修改一下。再添加一个test组件,在点击按钮的时候发起传参的事件。代码截图如下所示:
在这里插入图片描述
  运行效果如下所示:

在这里插入图片描述

$invoke

  继续改写一下test组件,向组件中添加方法。
在这里插入图片描述
  改写index界面中的按钮点击事件。
在这里插入图片描述
  运行效果如下所示:
在这里插入图片描述

6.使用wepy组件通信——子向父传值

  子组件向父组件传值就一个方式$emit,这玩意也就是在接收的时候有点说道。所以这里先改造一下test组件。
在这里插入图片描述

events接收

  在组件中设置events对象,添加testTap接收方法,方法名与test组件中$emit()方法的第一个参数对应。
在这里插入图片描述
  运行效果如下所示:

在这里插入图片描述

.user接收

  <test1 text="test1" @testTap.user="test"/>,使用这种方式去接收子组件传来的事件。index中的代码截图如下所示:
在这里插入图片描述
  运行效果如下所示:
在这里插入图片描述

总结

  虽然使用起来比较简单,但最好还是使用状态管理来替代一些复杂的传值。还有就是最好拿体验版测试,开发板测试挺坑的。

发布了41 篇原创文章 · 获赞 18 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/baidu_32377671/article/details/86700522