Open predaytor opened 3 weeks ago
Also, similar issue, the example below works perfectly on Fresh 1.0, console.log
logs out on both server and client (as it is an island component), but on Fresh 2.0 only the server logs out and the client has an empty {}
object .
from: https://deno-blog.com/Using_Preact_Signals_with_Fresh.2022-11-01
state.ts
:
import { type Signal, signal } from '@preact/signals';
export type AppStateType = {
isMainDrawerOpen: Signal<boolean>;
};
export function createAppState(): AppStateType {
const isMainDrawerOpen = signal(false);
return {
isMainDrawerOpen,
};
}
/islands/app-state-provider.tsx
:
import { ComponentChildren, createContext } from 'preact';
import { AppStateType, createAppState } from '../state.ts';
export const AppStateContext = createContext<AppStateType>({} as AppStateType);
export function AppStateProvider(props: { children?: ComponentChildren; }) {
const state = createAppState();
console.log(state);
return (
<AppStateContext.Provider value={state}>
{props.children}
</AppStateContext.Provider>
);
}
/routes/_app.tsx
:
import { type PageProps } from "$fresh/server.ts";
import { AppStateProvider } from "../islands/app-state-provider.tsx";
export default function App({ Component }: PageProps) {
return (
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>fresh-project</title>
<link rel="stylesheet" href="/styles.css" />
</head>
<body>
<AppStateProvider>
<Component />
</AppStateProvider>
</body>
</html>
);
}
Is it possible to compose multiple exports of a certain island component in Fresh 2.0? It worked at Fresh 1.0. Not sure if this is even a good pattern as we can't rely on render props callbacks etc, when using in a server context.
So the expected behavior for islands to be imported using a single component import or the default export (similar to Next.js client components) and the only pass serializable props with children?
islands/collapsible.tsx
:routes/index.tsx
: