diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index e29ebbb..894e538 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -1,34 +1,34 @@ -name: autofix.ci +# name: autofix.ci -on: - push: - branches: - - main +# on: +# push: +# branches: +# - main - pull_request: - branches: - - main +# pull_request: +# branches: +# - main -jobs: - autofix: - runs-on: ubuntu-latest - timeout-minutes: 10 +# jobs: +# autofix: +# runs-on: ubuntu-latest +# timeout-minutes: 10 - steps: - - uses: actions/checkout@v4 +# steps: +# - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 +# - uses: pnpm/action-setup@v4 - - name: Use Node.js lts/* - uses: actions/setup-node@v4 - with: - node-version: lts/* - cache: pnpm +# - name: Use Node.js lts/* +# uses: actions/setup-node@v4 +# with: +# node-version: lts/* +# cache: pnpm - - name: Install - run: pnpm install --frozen-lockfile +# - name: Install +# run: pnpm install --frozen-lockfile - - name: Lint - run: pnpm run lint --fix +# - name: Lint +# run: pnpm run lint --fix - - uses: autofix-ci/action@v1 +# - uses: autofix-ci/action@v1 diff --git a/content/0.index.md b/content/0.index.md index d30d132..91a8440 100644 --- a/content/0.index.md +++ b/content/0.index.md @@ -15,11 +15,11 @@ ogImage: ## Nuxt とは? -Nuxt は、[Vue.js](https://vuejs.org) を使用して、型安全でパフォーマンスが高く本番環境に適したフルスタックの Web アプリケーションやウェブサイトを作成するための直感的で拡張可能な方法を提供する、無料で[オープンソースのフレームワーク](https://github.com/nuxt/nuxt)です。Nuxt はベンダーロックインがなく、アプリケーションを[**どこでも、エッジ上でも**](https://nuxt.com/blog/nuxt-on-the-edge)デプロイすることができます。 +Nuxt は、[Vue.js](https://vuejs.org) を使用して、型安全でパフォーマンスが高く本番環境に適したフルスタックの Web アプリケーションやウェブサイトを作成するための直感的で拡張可能な方法を提供する、無料で [オープンソースのフレームワーク](https://github.com/nuxt/nuxt) です。Nuxt はベンダーロックインがなく、アプリケーションを [**どこでも、エッジ上でも**](https://nuxt.com/blog/nuxt-on-the-edge) デプロイすることができます。 ## はじめに -このチュートリアルでは、HTML、CSS、JavaScript の基本的な概念に既に精通していることを前提としています。Nuxt は[Vue](https://vuejs.org) の上に構築されたフルスタックフレームワークのため、Vue の基本的なチュートリアルも提供しています。 +このチュートリアルでは、HTML、CSS、JavaScript の基本的な概念に既に精通していることを前提としています。Nuxt は [Vue](https://vuejs.org) の上に構築されたフルスタックフレームワークのため、Vue の基本的なチュートリアルも提供しています。 以下のトピックをクリックして学習を始めてください: diff --git a/content/1.vue/2.reactivity/.template/files/app.vue b/content/1.vue/2.reactivity/.template/files/app.vue index 1b5799a..ee6e029 100644 --- a/content/1.vue/2.reactivity/.template/files/app.vue +++ b/content/1.vue/2.reactivity/.template/files/app.vue @@ -1,4 +1,4 @@ - diff --git a/content/1.vue/3.reactivity-2/.template/solutions/app.vue b/content/1.vue/3.reactivity-2/.template/solutions/app.vue index fa1ae54..0a1aff0 100644 --- a/content/1.vue/3.reactivity-2/.template/solutions/app.vue +++ b/content/1.vue/3.reactivity-2/.template/solutions/app.vue @@ -1,39 +1,41 @@ diff --git a/content/1.vue/3.reactivity-2/index.md b/content/1.vue/3.reactivity-2/index.md index 1c231b3..a8d9e48 100644 --- a/content/1.vue/3.reactivity-2/index.md +++ b/content/1.vue/3.reactivity-2/index.md @@ -2,42 +2,34 @@ ogImage: true --- -# Reactivity Part 2 +# リアクティビティー パート2 -前章で `ref` と `computed` を使った基本的なデータバインディングを学びました。本章では、`reactive` と `watch` について学びましょう。この章で基本的なリアクティビティシステムをマスターできます! +前章で `ref` と `computed` を使った基本的なデータバインディングを学びました。本章では、`watch` について学びましょう。この章で基本的なリアクティビティシステムをマスターできます! -- [`reactive()`](https://ja.vuejs.org/api/reactivity-core#reactive) はオブジェクト全体をリアクティブなデータとして扱うことができます。複数のプロパティを持つオブジェクトを管理できます。 - -- [`watch()`](https://ja.vuejs.org/api/reactivity-core#watch) はリアクティブなデータの変化を監視し、変化があったときに特定の処理を実行することができます。 - -`reactive` で宣言された値は、JavaScript の[プロキシ](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Proxy)として返ってくるため、以下のように通常のオブジェクトと同じように操作することができます。 +[`watch()`](https://ja.vuejs.org/api/reactivity-core#watch) はリアクティブなデータの変化を監視し、変化があったときに特定の処理を実行することができます。\ +`watch` は `computed` と同様にリアクティブ値の変化に応じて作用しますが、主に `console.log` や `fetch` のような副作用をリアクティブに実行するときに使います。 ```ts -const counter = reactive({ count: 0 }) -counter.count++ // .value は不要 -console.log(counter.count) // -> 1 -``` +const count = ref(0) -::note -**注意**: よくある間違いとして、`ref` はプリミティブな値のみに対応し、オブジェクトには `reactive` を使うという誤解があります。実際は `ref` でも `ref({ count: 0 })` のようにオブジェクトをリアクティブな値として宣言することができます。 -また、`reactive` には [いくつかの制限事項がある](https://ja.vuejs.org/guide/essentials/reactivity-fundamentals#limitations-of-reactive) ため、リアクティブな状態を宣言する際は基本的に `ref` を用いるのが推奨されます。 -:: +watch(count, (newValue, oldValue) => { + console.log(`count changed from ${oldValue} to ${newValue}`) +}) +``` -`watch` は `computed` と同様にリアクティブ値の変化に応じて作用しますが、主に `console.log` や `fetch` のような副作用をリアクティブに実行するときに使います。 プレイグラウンドでは、サーバーで管理している TODO アイテムを表示していますが、表示する ID が変化したときに新しいアイテムを取得するために `watch` による監視をしています。 `watch` に関する詳しい説明は [ウォッチャーガイド](https://ja.vuejs.org/guide/essentials/watchers) を参照してください。 -## チャレンジ問題 +## チャレンジ -今のプレイグラウンドは、TODO アイテムに関するデータを `todoId` と `todoData` の 2 つのリアクティブ値として管理しています。これらを 1 つの `todoData` にまとめましょう。 -これらのステップを実行することで、`reactive` と `watch` の理解を深めることができるのでぜひ挑戦してみてください! +今のプレイグラウンドは、TODO アイテムに関するデータを `id` と `data` の 2 つのリアクティブ値として管理しています。これらを 1 つの `state` という ref オブジェクトにまとめてみましょう。 -1. `todoData` に `id` プロパティを追加し、`todoId` を消しましょう。 -2. エラー箇所にしたがって、`todoId` と書いてある箇所を `todoData.id` に変えましょう。 - - これで `watch` 以外のエラーは解消されるはずです。 +1. `state` という変数を作成し、`id` と `data` と `loading` を `state` にまとめましょう。 +2. エラー箇所にしたがって、`id`, `loading`, `data` と書いてある箇所はそれぞれ `state.value.id`, `state.value.loading`, `state.value.data` に書き換えましょう。 + - template 内では `.value` を書く必要はありません 3. `watch` の第一引数をゲッター関数に変えましょう。 - - `todoData.id` のままだと数値を渡していることになるため、`watch` が変化を補足できません。 + - `state.value.id` のままだと数値を渡していることになるため、`watch` が変化を補足できません。 もし手詰まりになったら、解決策を確認するためのボタンをクリックして、ヒントを得ることができます。 :ButtonShowSolution{.bg-faded.px4.py2.rounded.border.border-base.hover:bg-active.hover:text-primary.hover:border-primary:50} diff --git a/content/1.vue/4.composition-api/index.md b/content/1.vue/4.composition-api/index.md index 0178d92..b2c74db 100644 --- a/content/1.vue/4.composition-api/index.md +++ b/content/1.vue/4.composition-api/index.md @@ -10,7 +10,7 @@ Composables の主な特徴は以下の通りです。 Nuxt では、`composables/` ディレクトリに Composables なロジックを格納することが多く、[自動インポート](https://nuxt.com/docs/examples/features/auto-imports) の対象になります。 -## チャレンジ問題 +## チャレンジ それでは、これらの特徴を踏まえて以下のステップでロジックを Composables として切り出し、再利用してみましょう。