mirror of
https://github.com/jaandrle/deka-dom-el
synced 2024-11-23 00:59:38 +01:00
🎉
This commit is contained in:
parent
13c75fede1
commit
14427882ed
@ -81,11 +81,24 @@ function todoComponent({ textContent, value }){
|
|||||||
textContent(ev.target.value);
|
textContent(ev.target.value);
|
||||||
is_editable(false);
|
is_editable(false);
|
||||||
});
|
});
|
||||||
|
const memo= initMemo(host);
|
||||||
return el("li").append(
|
return el("li").append(
|
||||||
O.el(is_editable, is=> is
|
O.el(is_editable, is=> is
|
||||||
? el("input", { value: textContent(), type: "text" }, onedited)
|
? memo("view", ()=> el("input", { value: textContent(), type: "text" }, onedited))
|
||||||
: el("span", { textContent, onclick: is_editable.bind(null, true) }),
|
: memo("edit", ()=> el("span", { textContent, onclick: is_editable.bind(null, true) }))
|
||||||
),
|
),
|
||||||
el("button", { type: "button", value, textContent: "-" }, onclick)
|
el("button", { type: "button", value, textContent: "-" }, onclick)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
function initMemo(host){
|
||||||
|
const memos= new Map();
|
||||||
|
host(on.disconnected(()=> memos.clear()));
|
||||||
|
return function useMemo(key, fn){
|
||||||
|
let memo= memos.get(key);
|
||||||
|
if(!memo){
|
||||||
|
memo= fn();
|
||||||
|
memos.set(key, memo);
|
||||||
|
}
|
||||||
|
return memo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user