moias
moias
DDeno
Created by moias on 11/4/2022 in #help
Fresh fetch data in component
I know, but i just wanna fetch inside component no inside view
11 replies
DDeno
Created by moias on 11/4/2022 in #help
Fresh fetch data in component
LanguageToggle.tsx (child component) - island
export const handler: Handlers<ILanguageModel | null> = {
async GET(_, ctx) {
const resp = await fetch(`http://localhost:8000/api/languages/default`);
if (resp.status === 404) {
return ctx.render(null);
}
const data: ILanguageModel = await resp.json();
return ctx.render(data);
},
};

export default function LanguageToggle(data: ILanguageModel) {
const [language, setLanguage] = useState(data.id);

return (
<div className="menu-operators">
{JSON.stringify(language)}
</div>
);
}
export const handler: Handlers<ILanguageModel | null> = {
async GET(_, ctx) {
const resp = await fetch(`http://localhost:8000/api/languages/default`);
if (resp.status === 404) {
return ctx.render(null);
}
const data: ILanguageModel = await resp.json();
return ctx.render(data);
},
};

export default function LanguageToggle(data: ILanguageModel) {
const [language, setLanguage] = useState(data.id);

return (
<div className="menu-operators">
{JSON.stringify(language)}
</div>
);
}
Menu.tsx (parent component) - component
export function Menu() {
return (
<nav>
<a href="/" className="logo">
<img src="/logo.svg" alt="Logo" />
</a>
<ul className="links-list">
<li className="link">
Hello
</li>
<li className="language-toggle">
<LanguageToggle />
</li>
</ul>
<MenuToggle />
</nav>
);
}
export function Menu() {
return (
<nav>
<a href="/" className="logo">
<img src="/logo.svg" alt="Logo" />
</a>
<ul className="links-list">
<li className="link">
Hello
</li>
<li className="language-toggle">
<LanguageToggle />
</li>
</ul>
<MenuToggle />
</nav>
);
}
11 replies