封装组件

1、在components文件加下新建组件文件夹,在该文件夹下新建组件
2、在app.json中注册该组件

"usingComponents": {    "page": "components/auth/index",    "componentB":"/components/componentB/componentB.js"  },

3、子组件
1、组件的json中,设置该页面为组件

{  "component": true}

2、组件js

// pages/integral/integralRules/index.js.jsComponent({  behaviors: [],   // 父组件传入的值在这里,传入的值在这里承受  properties: {    ruleShow : Boolean  // 父组件的值  },  data: {    ruleShow:false,   }, // 公有数据,可用于模版渲染  // 生命周期函数,能够为函数,或一个在methods段中定义的办法名  attached: function () {},  moved: function () { },  detached: function () { },  methods: {  // 此处编写办法    onClickHide() {      this.setData({ ruleShow: false });    }  }})

4、父组件
1、父组件的json中引入子组件

{  "usingComponents": {    "componentB":"/component/componentB/componentB.js"  }}

2、页面应用,父传子

<page pclass="page">  // 加上page 会占位    <view>      // ....      // json中引入的名字在这里应用,这里就是引入的组件      // ruleShow为自定义名称,{{xxx}}为父组件传入的值        <componentB ruleShow='{{ruleShow}}'></componentB>    </view></page>
  data: {     ruleShow: false,  },   // 规定弹框  showFunction() {    console.log('更改父组件的值');    this.setData({      ruleShow : true    })   }   // 这里更改的值会回传给子组件


留神点

1、这里封装了一个弹窗组件,弹窗组件个别通过true和false管制显示和暗藏,暗藏状态下不占位,但如果组件的wxml上带有<page pclass="page>包裹,那么即便组件时暗藏状态也会占位,此时须要去掉才能够做到不占位成果。

<page pclass="page">  // 加上page 会占位  <!-- 弹窗 -->  <van-overlay show="{{ ruleShow }}" bind:click="onClickHide"></van-overlay></page>