This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Babel for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
- Configure the top-level
parserOptions
property like this:
export default {
// other rules...
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: ['./tsconfig.json', './tsconfig.node.json'],
tsconfigRootDir: __dirname,
},
}
- Replace
plugin:@typescript-eslint/recommended
toplugin:@typescript-eslint/recommended-type-checked
orplugin:@typescript-eslint/strict-type-checked
- Optionally add
plugin:@typescript-eslint/stylistic-type-checked
- Install eslint-plugin-react and add
plugin:react/recommended
&plugin:react/jsx-runtime
to theextends
list
✔ Select a framework: › React
✔ Select a variant: › TypeScript + SWC
Array.fromを使ってみた
例えばこれ、
function handlePlay(nextSquares: (string | null)[]) {
const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
setHistory(nextHistory);
setCurrentMove(nextHistory.length - 1);
}
そんなことはなさそう。
flutterで問題になるやつ
https://ja.react.dev/learn/tutorial-tic-tac-toe#wrapping-up
buttonタグの間にdivタグを入れてから、X, O入れるようにするとsquares系の変数を全部変えないといけなさそう。
type History = SquareValue[][]
を宣言するなら、そのままSquareValue[][]を登場させる方が分かりやすいか?
vscodeでautosaveにしている場合も⌘+sを押す必要がある。autosave自体は何も押さなくてもされる。
tscではちゃんとエラーになる
tsconfig.jsonの"include": ["src"],
を"include": ["src/**/*"],
にするとちゃんと怒られる。
と思ったけど、気のせいかもしれない。。。
https://eslint.org/docs/latest/use/configure/configuration-files#configuration-file
今、ファイル名違う気がするけど↑
https://eslint.org/docs/latest/use/configure/configuration-files-deprecated
↑やっぱりdeprecatedになってるな。
npm create vite@latest
のタイミング。
npx storybook@latest init
でも更新されてる
知らないうちに解決してた
currentSquaresが全てnullでないということで判定する
状態が、勝ち、負け、引き分け、勝負の途中の4つある
とりあえずOK
type SquareValue = "X" | "O" | null
をstorybookで表示するとバグる
https://react-docgen.dev/playground でみたけど、わからん。結局argTypesで対応した