小程序自定义组件

JavaScript06

小程序自定义组件,第1张

新手在第一次自定义组件的时候,首先写出来需要定义的组件的内容和布局,防止不熟练而出错。

一、新建一个文件夹,自己命名。以后所有的自定义组件都存放于此。

二、在此文件夹下新建一个自行命名的文件夹,命名最好语义化,与里面自定义组件的名字相呼应。

三、在新建的文件夹内新建一个Component文件 命名也是自定义。

四、在xxx里面把事先写好的ml和ss以及js文件复制进去。

1、把提前写好的页面布局复制到这个此文件里面。写法和在普通页面的写法一样  {{}}是插值表达式。这里可以直接使用js里面定义的数据。

eg:

1、组件自定义的属性列表写在 properties里面。需要写成对象的形式 

eg:

2、组件的方法列表写在 methods里面

eg:

五、在需要引用自定义组件页面文件的xxx.json里面引用。

注意:引用的时候,不可以以./开头。前面命名可以自命名,不必和后面名字一样。

六、在需要引用的页面里的的xxx.wxml里写已经命名好的组件。

组件的名字为自定义命名。

eg:

因为组件是自己写的,并非微信提供的官方组件,所以如果想要获取触发事件的话 ,需要写一个同步组件回传数据

触发自定义事件用triggerEvent。在需要调用的方法内写this.triggerEvent(“自定义属性名”,‘需要更新的数据’)

eg:

然后将此事件绑定到页面中。绑定事件需要用bind:自定义的方法名=“js中定义的方法”

利用data-active="变量名"属性添加需要变化的变量

eg:

xxx.wxml内写法:

注意:想要在页面中使用自定义的组件属性时,必须要现在定义组件的文件夹内的js文件中,先去定义属性,然后才可以引入使用。

第三方JS通常都有类似如下代码

if (typeof define === 'function' &&define.amd) {

define(function() {return Hammer

})

} else if (typeof module != 'undefined' &&module.exports) {module.exports = Hammer

} else {window[exportName] = Hammer

}

这样的JS采用了UMD导出,直接import进来就可以了,如果没有,就要自己写模块导出来封装。

定义组件:

1、定义有状态组件:

// 定义Header类,这个类是Component的子类

// render()方法是一个渲染方法,该方法返回一个View模块

class Header extends Component {

/* 实现Header类的render方法,这个方法返回一个View,显示Footer*/

render() {

return (

<View>

<Text>我是Header</Text>

</View>

)

}

2、定义无状态组件:

const Footer =() =>(

<View>

<Text>我是Footer</Text>

</View>

)

3、将自定义的组件导出,才能在其他js文件中使用。

export default Header // 导出这个模块,供外部调用

module.exports = 'Footer' // ES5的语法

注:如果在同一个文件中定义和使用组件,则无需导出。

4、导入自定义组件:

import Header from "./header" // 引入我们的Header模块