タイトル : Qwik まずはrun devするまで 2023/10 (qwik-cityなしでviteから)
更新日 : 2023-10-03
カテゴリ : プログラミング
Qwik で run dev するまで
Viteのテンプレートに qwik-ts があったので、Viteでやってみます。
$ npm create vite@latest qwik-test1 -- --template qwik-ts
Scaffolding project in /home/XXX/work/Qwik/Try1/qwik-test1...
Done. Now run:
cd qwik-test1
npm install
npm run dev
$
ちょっといじります。Reactに似てるって言うので、Reactを思い出しながらね。
メモ
export const App = component$(() => { ★component$ 。Qwikでは暗黙な非同期境界ができない様に、非同期部分を $ で明示します。
例えば、 コンポーネントの記述が component$()で囲われていますが、コンポーネントコードが
一つの非同期分割単位(非同期境界)になっていることを示しています、だって。
const count = useSignal(0) ★ useSignalですね。Reactの血筋ですかね。
index.html
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8" /><title>Vite + Qwik + TS</title></head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
main.tsx
import '@builder.io/qwik/qwikloader.js'
import { render } from '@builder.io/qwik'
import { App } from './app.tsx'
import './index.css'
render(document.getElementById('app') as HTMLElement, <App />)
app.tsx
import { component$, useSignal } from '@builder.io/qwik'
import './app.css'
import MyList from './mylist'
export const App = component$(() => {
const count = useSignal(0)
const list = [
{
name: 'apple',
price: 150,
},
{
name: 'orange',
price: 100,
},
]
return (
<>
<h1>Vite + Qwikをちょっといじる</h1>
<div class="card">
<button onClick$={() => count.value++}>count is {count.value}</button>
</div>
<MyList mylist={list}/>
</>
)
})
mylist.tsx
import { component$ } from '@builder.io/qwik';
type ItemProps = {
name: string;
price: number;
}
type MylistProp = {
mylist: ItemProps[]
}
export const MyList = component$<MylistProp>(({mylist}) => {
const listItems = mylist.map(item =>
<li key={item.name}>
{item.name} {item.price}
</li>
);
return (
<ul>{listItems}</ul>
);
});
export default MyList;