はじめに

アプリを作成し、最初のページを描画して、キー入力に応答します。

この章のアプリはコンソールで動作しています。⌘⌥JCtrl+Shift+J⌘⌥KCtrl+Shift+K⌘⌥Cで開き(先に開発者向け機能を有効化)、試してください。
章の動画を見る3:55

この章の内容

  • アプリの作成
  • 最初のページ
  • キー入力への応答

全10章で、DevToolsコンソールに描画するデプロイダッシュボード、Acme Deploysを作ります。各章の最後には、書いたコードの状態そのままのアプリが、このページのコンソールで実際に動作します。

アプリの作成

create-text-app は、App Router、TypeScript、text CLIを備えたプロジェクトのひな形を生成します。

bunx create-text-app@latest acme-deploys --template startercd acme-deploysbun installbun dev

http://localhost:3000 を開き、ブラウザーのコンソールを開きます。ページにはフォーカスパッドが表示されます。アプリはコンソールに描画されます。

最初のページ

各ルートは app/ 内の page.tsx です。スターターページをダッシュボードのタイトルカードに置き換えます。

app/page.tsxtsx
import { Box, Text } from "@textjs/app";export default function Page() {  return (    <Box className="flex-col border rounded px-2 py-1">      <Text bold>▼ Acme Deploys</Text>      <Text color="muted">Hello, console.</Text>    </Box>  );}

ファイルを保存します。Fast Refreshがフレームを再描画し、コンポーネントの状態を保持します。

キー入力への応答

useInput は、ページにフォーカスがある間、すべてのキー入力を受け取ります。挨拶の回数を数えます。

app/page.tsx+10-2tsx
削除:import { Box, Text } from "@textjs/app";追加:import { useState } from "react";追加:import { Box, Text, useInput } from "@textjs/app";export default function Page() {追加:  const [hellos, setHellos] = useState(0);追加:追加:  useInput((e) => {追加:    if (e.key === "return") setHellos((n) => n + 1);追加:    if (e.input === "r") setHellos(0);追加:  });追加:  return (    <Box className="flex-col border rounded px-2 py-1">      <Text bold>▼ Acme Deploys</Text>削除:      <Text color="muted">Hello, console.</Text>追加:      <Text color="muted">{hellos === 0 ? "Hello, console." : `Hello, console. ×${hellos}`}</Text>    </Box>  );}

これでText.jsアプリの完成です。Reactの状態とレイアウトボックスを備え、変更されたフレームごとに console.log を一度呼び出し、アイドル時には何もログに出力しません。

試す

これは章の終わりに完成するAcme Deploysで、DevToolsで動作しています。パッドをクリックして、以下のキーを使います。

▼ 01 · はじめに

コンソールを開く

⌘⌥J
CtrlShiftJ
⌘⌥K
CtrlShiftK
⌘⌥C

アプリはDevToolsに描画されます。まずSafariの「設定」→「詳細」で「Webデベロッパ用の機能を表示」をオンにします。 次にここをクリックして、Enterを押します。

デスクトップで開く

このアプリはDevToolsのコンソールに描画されるため、デスクトップブラウザーが必要です。

クイズ

2問

すべての問題に回答すると章を完了できます。

Text.jsのアプリはどこにUIを描画しますか?

 

アイドル状態のアプリは何をログ出力しますか?