Skip to content

Latest commit

 

History

History
49 lines (41 loc) · 803 Bytes

events.md

File metadata and controls

49 lines (41 loc) · 803 Bytes

Events

With createModel():

assuming you created your model with createModel()

const MyModel = createModel(Model<{}, {
	myevent: number,
}>)

Listening to events:

const MyComponent = MyModel.withModel(({
	model,
}) => {
	const myEventHandler = useCallback((data: number) => {
		...
	})

	model.useEvent('myevent', myEventHandler)
})

Using static MyModel.useEvent:

const MyComponent = () => {
	const myEventHandler = useCallback((data: number) => {
		...
	})

	MyModel.useEvent('myevent', myEventHandler)
}

Dispatching events:

const MyComponent = MyModel.withModel(({
	model,
}) => {
	const myEventDispatcher = model.useEvent('myevent')

	const onClick = useCallback(() => {
		const x = 5

		myEventDispatcher(x)
	})

	<a onClick={onClick}/>
})