在 Taro 的頁面和組件類中,this 指向的是 Taro 頁面或組件的實例,例如
import Taro, { Component } from '@tarojs/taro'
import { View } from '@tarojs/components'
export default class Menu extends Component {
static defaultProps = {
data: []
}
constructor(props) {
super(props)
this.state = {
checked: props.checked
}
}
componentWillMount () {
console.log(this) // this -> 組件 Menu 的實例
}
render () {
return <View />
}
}
但是一般我們需要獲取 Taro 的頁面和組件所對應的小程序原生頁面和組件的實例,這個時候我們可以通過 this.$scope 就能訪問到它們。
所以當調用一些 API 需要傳入小程序的頁面或者組件實例時,可以直接傳入 this.$scope,例如 Taro.createCanvasContext(canvasId, this) 這個 API,第二個參數就是自定義組件實例 this,在 Taro 中就可以如下使用
Taro.createCanvasContext(canvasId, this.$scope)
更多建議: