I don't want to use transition-group or any superfluous code. I just want the below API style to work.
The output after 1 second is a a 3 4 5 6
The output after 2 second becomes 3 4 5 6
import { render } from "solid-js/web";
import { For, createSignal, createMemo, mapArray } from "solid-js";
function make_position(_: number) {
let [removing, setRemoving] = createSignal()
return {
get value() {
return removing() ? 'a': _
},
async on_remove() {
// I want `mapArray` to call this function when an item is removed, and wait on the returned promise to actually remove the item.
setRemoving(true)
return new Promise(resolve => {
setTimeout(resolve, 1000);
})
}
}
}
function Counter() {
const [list1, setList1] = createSignal([1, 2, 3, 4, 5]);
const ls = createMemo(mapArray(list1, _ => make_position(_)))
setTimeout(() => {
setList1([3,4,5,6])
}, 1000)
return (<>
<For each={ls()}>{ item =>
<span>{item.value}</span>
}</For>
</>)
}
render(() => <Counter />, document.getElementById("app"));