wasmplay
wasmplay copied to clipboard
Port todomvc examples from gopherjs vecty
The changes github.com/gopherjs/vecty/example/todomvc/ => github.com/bketelsen/wasmplay/todomvcvecty/ github.com/gowasm/vecty => github.com/bketelsen/wasmplay/vecty github.com/gopherjs/js/ => "github.com/gowasm/gopherwasm/js"
in the main function we need to block to not exit the app
c := make(chan struct{}, 0)
<-c
Keep in mind that I have no idea what I am doing so take it with a grain of salt :-)
I have just noticed that some events are fired multiple times. This issue sometimes crash the app.
One way to reproduce it is to create multiple items (5) and delete the top 2 or 3 items. The action *actions.DestroyItem
is fired multiple times.
Here it is the kind of traceback
Wrapping something real
wasm_exec.js:39 a.Index: 0 ; item len: 6
wasm_exec.js:39 item len: 5
wasm_exec.js:39 Global [object Window]
wasm_exec.js:39 name: requestAnimationFrame
wasm_exec.js:39 args [{408 {80399}}]
wasm_exec.js:39 Wrapping something real
wasm_exec.js:39 a.Index: 0 ; item len: 5
wasm_exec.js:39 item len: 4
wasm_exec.js:39 a.Index: 0 ; item len: 4
wasm_exec.js:39 item len: 3
wasm_exec.js:39 a.Index: 0 ; item len: 3
wasm_exec.js:39 item len: 2
wasm_exec.js:39 a.Index: 0 ; item len: 2
wasm_exec.js:39 item len: 1
wasm_exec.js:39 a.Index: 0 ; item len: 1
wasm_exec.js:39 item len: 0
wasm_exec.js:39 a.Index: 0 ; item len: 0
wasm_exec.js:39 panic: runtime error: slice bounds out of range
wasm_exec.js:39
wasm_exec.js:39 goroutine 5 [running]:
wasm_exec.js:39 github.com/bketelsen/wasmplay/todomvcvecty/store.onAction(0x128a0, 0xc214430)
wasm_exec.js:39 /home/yml/gopath/src/github.com/bketelsen/wasmplay/todomvcvecty/store/store.go:55 +0x84
wasm_exec.js:39 github.com/bketelsen/wasmplay/todomvcvecty/dispatcher.Dispatch(0x128a0, 0xc214430)
wasm_exec.js:39 /home/yml/gopath/src/github.com/bketelsen/wasmplay/todomvcvecty/dispatcher/dispatcher.go:12 +0x5
wasm_exec.js:39 github.com/bketelsen/wasmplay/todomvcvecty/components.(*ItemView).onDestroy(0xc02ed80, 0xc214428)
wasm_exec.js:39 /home/yml/gopath/src/github.com/bketelsen/wasmplay/todomvcvecty/components/itemview.go:32 +0x4
wasm_exec.js:39 github.com/bketelsen/wasmplay/todomvcvecty/components.(*ItemView).onDestroy-fm(0xc214428)
wasm_exec.js:39 /home/yml/gopath/src/github.com/bketelsen/wasmplay/todomvcvecty/components/itemview.go:105 +0x2
wasm_exec.js:39 github.com/gowasm/vecty.(*HTML).reconcileProperties.func1(0x13a4f)
wasm_exec.js:39 /home/yml/gopath/src/github.com/gowasm/vecty/dom.go:251 +0x7
wasm_exec.js:39 syscall/js.NewEventCallback.func1(0xc214424, 0x1, 0x1)
wasm_exec.js:39 /home/yml/gowasm/src/syscall/js/callback.go:95 +0x3
wasm_exec.js:39 syscall/js.callbackLoop()
wasm_exec.js:39 /home/yml/gowasm/src/syscall/js/callback.go:139 +0x6
wasm_exec.js:39 created by syscall/js.NewCallback.func1
wasm_exec.js:39 /home/yml/gowasm/src/syscall/js/callback.go:65 +0x2```