Skip to content

Commit b4b6cbc

Browse files
authored
Merge pull request #7386 from QwikDev/v2-fix-unwrap-flag
fix: wrap WrappedSignal without unwrap flag
2 parents 8b27834 + 0cc8673 commit b4b6cbc

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

packages/qwik/src/core/signal/signal-utils.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { _CONST_PROPS, _IMMUTABLE } from '../shared/utils/constants';
22
import { assertEqual } from '../shared/error/assert';
33
import { isObject } from '../shared/utils/types';
4-
import { SignalFlags, WrappedSignal } from './signal';
4+
import { SignalFlags, WrappedSignal, WrappedSignalFlags } from './signal';
55
import { isSignal, type Signal } from './signal.public';
66
import { getStoreTarget } from './store';
77
import { isPropsProxy } from '../shared/jsx/jsx-runtime';
@@ -33,7 +33,7 @@ export const _wrapProp = <T extends Record<any, any>, P extends keyof T>(...args
3333
}
3434
if (isSignal(obj)) {
3535
assertEqual(prop, 'value', 'Left side is a signal, prop must be value');
36-
if (obj instanceof WrappedSignal) {
36+
if (obj instanceof WrappedSignal && obj.flags & WrappedSignalFlags.UNWRAP) {
3737
return obj;
3838
}
3939
return getWrapped(args);

starters/apps/qwikrouter-test/src/routes/(common)/loaders/prop/index.tsx

+12-1
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,22 @@ export const useTestLoader = routeLoader$(async () => {
77

88
export default component$(() => {
99
const testSignal = useTestLoader();
10-
return <Homepage testSignal={testSignal} />;
10+
return (
11+
<>
12+
<Homepage testSignal={testSignal} />
13+
<HomepageUnwrapped testSignal={testSignal.value} />
14+
</>
15+
);
1116
});
1217

1318
export const Homepage = component$(
1419
(props: { testSignal: Signal<{ test: string }> }) => {
1520
return <div id="prop">{props.testSignal.value.test}</div>;
1621
},
1722
);
23+
24+
export const HomepageUnwrapped = component$(
25+
(props: { testSignal: { test: string } }) => {
26+
return <div id="prop-unwrapped">{props.testSignal.test}</div>;
27+
},
28+
);

starters/e2e/qwikrouter/loaders.e2e.ts

+1
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ test.describe("loaders", () => {
123123
test("should work loader result as component prop", async ({ page }) => {
124124
await page.goto("/qwikrouter-test/loaders/prop");
125125
await expect(page.locator("#prop")).toHaveText("test");
126+
await expect(page.locator("#prop-unwrapped")).toHaveText("test");
126127
});
127128
}
128129
});

0 commit comments

Comments
 (0)