Event
tsx
import { Component, h } from 'omi'
@tag('my-element')
class MyElement extends Component {
onClick = (evt) => {
alert('Hello Omi!')
}
render() {
return (
<h1 onClick={this.onClick}>Hello, world!</h1>
)
}
}import { Component, h } from 'omi'
@tag('my-element')
class MyElement extends Component {
onClick = (evt) => {
alert('Hello Omi!')
}
render() {
return (
<h1 onClick={this.onClick}>Hello, world!</h1>
)
}
}Using the bind decorator instead of the arrow function to automatically bind this:
tsx
import { Component, h, bind } from 'omi'
@tag('my-element')
class MyElement extends Component {
@bind
onClick(evt) {
alert('Hello Omi!')
}
render() {
return (
<h1 onClick={this.onClick}>Hello, world!</h1>
)
}
}import { Component, h, bind } from 'omi'
@tag('my-element')
class MyElement extends Component {
@bind
onClick(evt) {
alert('Hello Omi!')
}
render() {
return (
<h1 onClick={this.onClick}>Hello, world!</h1>
)
}
}Custom Event
tsx
@tag('my-element')
class MyElement extends Component {
onClick = (evt) => {
this.fire('my-event', { name: 'abc' })
}
render(props) {
return (
<h1 onClick={this.onClick}>Hello, world!</h1>
)
}
}@tag('my-element')
class MyElement extends Component {
onClick = (evt) => {
this.fire('my-event', { name: 'abc' })
}
render(props) {
return (
<h1 onClick={this.onClick}>Hello, world!</h1>
)
}
}Then bind events on your custom elements:
tsx
<my-element onMyEvent={(evt) => { alert(evt.detail.name) }}></my-element><my-element onMyEvent={(evt) => { alert(evt.detail.name) }}></my-element>or:
js
myElement.addEventListener('my-event', (evt) => {})myElement.addEventListener('my-event', (evt) => {})Fire triggers a custom event by this.fire. The first parameter of fire is the name of the event, and the second parameter is the data passed. The transmitted data can be obtained by `evt.detail'.