taro 小程序 & touch event 轉換 bug


taro 小程序 & touch event 轉換 bug

before

after

事件處理

https://nervjs.github.io/taro/docs/event.html#docsNav

阻止事件冒泡

在 Taro 中另一個不同是你不能使用 catchEvent 的方式阻止事件冒泡。
你必須明確的使用 stopPropagation。
例如,阻止事件冒泡你可以這樣寫:

class Toggle extends Component {
  constructor (props) {
    super(props)
    this.state = {isToggleOn: true}
  }

  onClick = (e) => {
    e.stopPropagation()
    this.setState(prevState => ({
      isToggleOn: !prevState.isToggleOn
    }))
  }

  render () {
    return (
      <button onClick={this.onClick}>
        {this.state.isToggleOn ? 'ON' : 'OFF'}
      </button>
    )
  }
}

除了 bind 之外,事件參數也可以使用匿名函數進行傳參。
直接寫匿名函數不會打亂原有監聽函數的參數順序:


class Popper extends Component {
  constructor () {
    super(...arguments)
    this.state = { name: 'Hello world!' }
  }

  render () {
    const name = 'test'
    return (
      <Button onClick={(e) => {
        e.stopPropagation()
        this.setState({
          name
        })
      }}>
        {this.state.name}
      </Button>
    )
  }
}

注意: 使用通過 usingComponents 的第三方組件不支持匿名函數


事件系統

事件分類

事件分為冒泡事件和非冒泡事件:

冒泡事件:當一個組件上的事件被觸發后,該事件會向父節點傳遞。
非冒泡事件:當一個組件上的事件被觸發后,該事件不會向父節點傳遞。

https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html#事件詳解

綁定並阻止事件冒泡

除 bind 外,也可以用 catch 來綁定事件。與 bind 不同, catch 會阻止事件向上冒泡。


事件對象

事件類型

事件分為冒泡事件和非冒泡事件:

冒泡事件:以關鍵字 on 為前綴,當組件上的事件被觸發,該事件會向父節點傳遞。

非冒泡事件:以關鍵字 catch 為前綴,當組件上的事件被觸發,該事件不會向父節點傳遞。

https://opendocs.alipay.com/mini/framework/events

https://opendocs.alipay.com/mini/framework/event-object



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM