W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Taro 支持使用小程序的第三方組件和插件,例如 echarts-for-weixin,使用方式也異常的簡單。
但是值得注意的是,如果在 Taro 項目引用了小程序原生的第三方組件和插件,那么該項目將不再具備多端轉(zhuǎn)換的能力,例如,如果使用了微信小程序的第三方組件,那么項目只能轉(zhuǎn)換成微信小程序,轉(zhuǎn)義成其他平臺會失效,使用其他小程序原生組件同理。
首先需要將第三方組件庫下載到項目的 src 目錄下,隨后在頁面或者組件里通過配置 usingComponents 指定需要引用的第三方組件即可,組件調(diào)用的時候需要按照 JSX 的使用規(guī)范來進行傳參和事件綁定。
usingComponents 指定的第三方組件名字需要以小寫開頭。
import Taro, { Component } from '@tarojs/taro'
import { View } from '@tarojs/components'
function initChart () {
// ....
}
export default class Menu extends Component {
static defaultProps = {
data: []
}
config = {
// 定義需要引入的第三方組件
usingComponents: {
'ec-canvas': '../../components/ec-canvas/ec-canvas' // 書寫第三方組件的相對路徑
}
}
constructor (props) {
super(props)
this.state = {
ec: {
onInit: initChart
}
}
}
componentWillMount () {
console.log(this) // this -> 組件 Menu 的實例
}
render () {
return (
<View>
<ec-canvas id='mychart-dom-area' canvas-id='mychart-area' ec={this.state.ec}></ec-canvas>
</View>
)
}
}
使用插件前,使用者要在 app.js 的配置中聲明需要使用的插件,例如
import Taro, { Component } from '@tarojs/taro'
class App extends Component {
config = {
plugins: {
myPlugin: {
version: '1.0.0',
provider: 'wxidxxxxxxxxxxxxxxxx'
}
}
}
}
如上例所示, plugins 定義段中可以包含多個插件聲明,每個插件聲明以一個使用者自定義的插件引用名作為標識,并指明插件的 appid 和需要使用的版本號。其中,引用名(如上例中的 myPlugin)由使用者自定義,無需和插件開發(fā)者保持一致或與開發(fā)者協(xié)調(diào)。在后續(xù)的插件使用中,該引用名將被用于表示該插件。
使用插件時,插件的代碼對于使用者來說是不可見的。為了正確使用插件,使用者應(yīng)查看插件詳情頁面中的“開發(fā)文檔”一節(jié),閱讀由插件開發(fā)者提供的插件開發(fā)文檔,通過文檔來明確插件提供的自定義組件、頁面名稱及提供的 js 接口規(guī)范等。
使用插件提供的自定義組件,和上述 “引入第三方組件” 的方式相仿,在頁面或組件的配置中定義需要引入的自定義組件時,使用 plugin:// 協(xié)議指明插件的引用名和自定義組件名,例如:
import Taro, { Component } from '@tarojs/taro'
export default class PageA extends Component {
config = {
// 定義需要引入的插件
usingComponents: {
'hello-component': 'plugin://myPlugin/hello-component'
}
}
}
出于對插件的保護,插件提供的自定義組件在使用上有一定的限制:
插件的頁面從小程序基礎(chǔ)庫版本 2.1.0 開始支持。
需要跳轉(zhuǎn)到插件頁面時,url 使用 plugin:// 前綴,形如 plugin://PLUGIN_NAME//PLUGIN_PAGE, 如:
<Navigator url='plugin://myPlugin/hello-page'>
Go to pages/hello-page!
</Navigator>
使用插件的 js 接口時,可以使用 Taro.requirePlugin 方法。例如,插件提供一個名為 hello 的方法和一個名為 world 的變量,則可以像下面這樣調(diào)用:
const myPluginInterface = requirePlugin('myPlugin')
const myWorld = myPluginInterface.world
myPluginInterface.hello()
在使用第三方組件以及插件提供的組件時,事件綁定的寫法與原生寫法略有不同,因為必須遵循 Taro 中事件綁定的規(guī)范,例如,原生中引入第三方組件的寫法
<calendar binddayClick='dayClickHandler' />
那么在 Taro 中的寫法則是
<calendar onDayClick={this.dayClickHandler} />
請參考示例項目:https://github.com/NervJS/taro-sample-weapp
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: