Skip to content

Commit c46d8d1

Browse files
committed
fix createWritableMemo (fixes #772)
1 parent fb78a63 commit c46d8d1

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

packages/memo/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,12 @@ export function createWritableMemo<T>(
191191
options?: MemoOptions<T | undefined>,
192192
): [signal: Accessor<T>, setter: Setter<T>] {
193193
let combined: Accessor<T> = () => value as T;
194+
194195
const [signal, setSignal] = createSignal(value as T, EQUALS_FALSE_OPTIONS),
195196
memo = createMemo(
196197
callbackWith(fn, () => combined()),
197198
value,
199+
EQUALS_FALSE_OPTIONS,
198200
);
199201

200202
return [

packages/memo/test/writable.test.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ describe("createWritableMemo", () => {
3232
const [count, setCount] = createSignal(1);
3333
let prevCb: number | undefined;
3434
const { result, setResult, dispose } = createRoot(dispose => {
35-
const [result, setResult] = createWritableMemo(p => ((prevCb = p), count() * 2), -2);
35+
const [result, setResult] = createWritableMemo((p?: number) => ((prevCb = p), count() * 2), -2);
3636
expect(prevCb).toBe(-2);
3737
expect(result()).toBe(2);
3838
return { result, dispose, setResult };
@@ -101,4 +101,23 @@ describe("createWritableMemo", () => {
101101
expect(memo()).toBe(-2);
102102
dispose();
103103
}));
104+
105+
// https://github.com/solidjs-community/solid-primitives/issues/772
106+
test("issue 772", () => {
107+
const [source, setSource] = createSignal(0);
108+
const [[value, setValue], dispose] = createRoot(dispose => [createWritableMemo(() => !!source()), dispose])
109+
110+
expect(value()).toBe(false)
111+
112+
setSource(1);
113+
expect(value()).toBe(true)
114+
115+
setValue(false);
116+
expect(value()).toBe(false)
117+
118+
setSource(2);
119+
expect(value()).toBe(true)
120+
121+
dispose()
122+
})
104123
});

0 commit comments

Comments
 (0)