Skip to content

Added Scrimba lessons #1512

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Feb 21, 2019
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions docs/.vuepress/override.styl
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
.scrimba
background-color #e7ecf3
padding 1em 1.25em
border-radius 2px
color #486491
position relative
a
color #486491 !important
position relative
padding-left 36px
&:before
content ''
position absolute
display block
width 30px
height 30px
top -5px
left -4px
border-radius 50%
background-color #73abfe
&:after
content ''
position absolute
display block
width 0
height 0
top 5px
left 8px
border-top 5px solid transparent
border-bottom 5px solid transparent
border-left 8px solid #fff
2 changes: 2 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ In addition, by defining and separating the concepts involved in state managemen

This is the basic idea behind Vuex, inspired by [Flux](https://facebook.github.io/flux/docs/overview.html), [Redux](http://redux.js.org/) and [The Elm Architecture](https://guide.elm-lang.org/architecture/). Unlike the other patterns, Vuex is also a library implementation tailored specifically for Vue.js to take advantage of its granular reactivity system for efficient updates.

If you want to learn Vuex in an interactive way you can check out this [Vuex course on Scrimba](https://scrimba.com/g/gvuex), which gives you a mix of screencast and code playground that you can pause and play around with anytime.

![vuex](/vuex.png)

### When Should I Use It?
Expand Down
2 changes: 2 additions & 0 deletions docs/fr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ De plus, en définissant et en séparant les concepts impliqués dans la gestion

Voilà l'idée de base derrière Vuex, inspiré par [Flux](https://facebook.github.io/flux/docs/overview.html), [Redux](http://redux.js.org/) et [l'architecture Elm](https://guide.elm-lang.org/architecture/). À l'inverse des autres modèles, Vuex est aussi une bibliothèque d'implémentation conçue spécialement pour Vue.js afin de bénéficier de son système de réactivité granulaire pour des modifications efficaces.

Si vous voulez apprendre Vuex de manière interactive, jetez un oeil à ce [cours sur Vuex sur Scrimba.](https://scrimba.com/g/gvuex)

![vuex](/vuex.png)

### Quand l'utiliser ?
Expand Down
2 changes: 2 additions & 0 deletions docs/fr/guide/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Pour commencer

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cMPa2Uk" target="_blank" rel="noopener noreferrer">Essayez cette partie sur Scrimba (EN)</a></div>

Au cœur de chaque application Vuex, il y a la **zone de stockage (« store »)**. Un « store » est tout simplement un conteneur avec l'**état (« state »)** de votre application. Il y a deux choses qui différencient un store Vuex d'un simple objet global :

1. Les stores Vuex sont réactifs. Quand les composants Vue y récupèrent l'état, ils se mettront à jour de façon réactive et efficace si l'état du store a changé.
Expand Down
2 changes: 2 additions & 0 deletions docs/fr/guide/actions.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Actions

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/c6ggR3cG" target="_blank" rel="noopener noreferrer">Essayez cette partie sur Scrimba (EN)</a></div>

Les actions sont similaires aux mutations, à la différence que :

- Au lieu de modifier l'état, les actions actent des mutations.
Expand Down
2 changes: 2 additions & 0 deletions docs/fr/guide/forms.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Gestion des formulaires

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cqKRgEC9" target="_blank" rel="noopener noreferrer">Essayez cette partie sur Scrimba (EN)</a></div>

Lorsque l'on utilise Vuex en mode strict, il peut être compliqué d'utiliser `v-model` sur une partie de l'état qui appartient à Vuex :

``` html
Expand Down
2 changes: 2 additions & 0 deletions docs/fr/guide/getters.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Accesseurs

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/c2Be7TB" target="_blank" rel="noopener noreferrer">Essayez cette partie sur Scrimba (EN)</a></div>

Parfois nous avons besoin de calculer des valeurs basées sur l'état du store, par exemple pour filtrer une liste d'éléments et les compter :

``` js
Expand Down
2 changes: 2 additions & 0 deletions docs/fr/guide/modules.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Modules

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cqKK4psq" target="_blank" rel="noopener noreferrer">Essayez cette partie sur Scrimba (EN)</a></div>

Du fait de l'utilisation d'un arbre d'état unique, tout l'état de notre application est contenu dans un seul et même gros objet. Cependant, au fur et à mesure que notre application grandit, le store peut devenir très engorgé.

Pour y remédier, Vuex nous permet de diviser notre store en **modules**. Chaque module peut contenir ses propres états, mutations, actions, accesseurs. Il peut même contenir ses propres modules internes.
Expand Down
2 changes: 2 additions & 0 deletions docs/fr/guide/mutations.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Mutations

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/ckMZp4HN" target="_blank" rel="noopener noreferrer">Essayez cette partie sur Scrimba (EN)</a></div>

La seule façon de vraiment modifier l'état dans un store Vuex est d'acter une mutation. Les mutations Vuex sont très similaires aux évènements : chaque mutation a un **type** sous forme de chaine de caractères et un **gestionnaire**. La fonction de gestion est en charge de procéder aux véritables modifications de l'état, et elle reçoit l'état en premier argument :

``` js
Expand Down
2 changes: 2 additions & 0 deletions docs/fr/guide/plugins.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Plugins

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cvp8ZkCR" target="_blank" rel="noopener noreferrer">Essayez cette partie sur Scrimba (EN)</a></div>

Les stores Vuex prennent une option `plugins` qui expose des hooks pour chaque mutation. Un plugin Vuex est simplement une fonction qui reçoit un store comme unique argument :

``` js
Expand Down
4 changes: 4 additions & 0 deletions docs/fr/guide/state.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

### Arbre d'état unique

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cWw3Zhb" target="_blank" rel="noopener noreferrer">Essayez cette partie sur Scrimba (EN)</a></div>

Vuex utilise un **arbre d'état unique**, c'est-à-dire que cet unique objet contient tout l'état au niveau applicatif et sert de « source de vérité unique ». Cela signifie également que vous n'aurez qu'un seul store pour chaque application. Un arbre d'état unique rend rapide la localisation d'une partie spécifique de l'état et permet de facilement prendre des instantanés de l'état actuel de l'application à des fins de débogage.

L'arbre d'état unique n'entre pas en conflit avec la modularité. Dans les prochains chapitres, nous examinerons comment séparer votre état et vos mutations dans des sous-modules.
Expand Down Expand Up @@ -58,6 +60,8 @@ const Counter = {

### La fonction utilitaire `mapState`

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/c8Pz7BSK" target="_blank" rel="noopener noreferrer">Essayez cette partie sur Scrimba (EN)</a></div>

Lorsqu'un composant a besoin d'utiliser plusieurs accesseurs ou propriétés de l'état du store, déclarer toutes ces propriétés calculées peut devenir répétitif et verbeux. Afin de pallier à ça, nous pouvons utiliser la fonction utilitaire `mapState` qui génère des fonctions d'accession pour nous et nous épargne quelques coups de clavier :

``` js
Expand Down
2 changes: 2 additions & 0 deletions docs/fr/guide/testing.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Tests

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cPGkpJhq" target="_blank" rel="noopener noreferrer">Essayez cette partie sur Scrimba (EN)</a></div>

Les parties principales que l'on veut couvrir par des tests unitaires avec Vuex sont les mutations et les actions.

### Tester les mutations
Expand Down
2 changes: 2 additions & 0 deletions docs/guide/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Getting Started

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cMPa2Uk" target="_blank" rel="noopener noreferrer">Try this lesson on Scrimba</a></div>

At the center of every Vuex application is the **store**. A "store" is basically a container that holds your application **state**. There are two things that make a Vuex store different from a plain global object:

1. Vuex stores are reactive. When Vue components retrieve state from it, they will reactively and efficiently update if the store's state changes.
Expand Down
2 changes: 2 additions & 0 deletions docs/guide/actions.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Actions

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/c6ggR3cG" target="_blank" rel="noopener noreferrer">Try this lesson on Scrimba</a></div>

Actions are similar to mutations, the differences being that:

- Instead of mutating the state, actions commit mutations.
Expand Down
2 changes: 2 additions & 0 deletions docs/guide/forms.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Form Handling

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cqKRgEC9" target="_blank" rel="noopener noreferrer">Try this lesson on Scrimba</a></div>

When using Vuex in strict mode, it could be a bit tricky to use `v-model` on a piece of state that belongs to Vuex:

``` html
Expand Down
2 changes: 2 additions & 0 deletions docs/guide/getters.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Getters

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/c2Be7TB" target="_blank" rel="noopener noreferrer">Try this lesson on Scrimba</a></div>

Sometimes we may need to compute derived state based on store state, for example filtering through a list of items and counting them:

``` js
Expand Down
2 changes: 2 additions & 0 deletions docs/guide/modules.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Modules

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cqKK4psq" target="_blank" rel="noopener noreferrer">Try this lesson on Scrimba</a></div>

Due to using a single state tree, all state of our application is contained inside one big object. However, as our application grows in scale, the store can get really bloated.

To help with that, Vuex allows us to divide our store into **modules**. Each module can contain its own state, mutations, actions, getters, and even nested modules - it's fractal all the way down:
Expand Down
2 changes: 2 additions & 0 deletions docs/guide/mutations.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Mutations

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/ckMZp4HN" target="_blank" rel="noopener noreferrer">Try this lesson on Scrimba</a></div>

The only way to actually change state in a Vuex store is by committing a mutation. Vuex mutations are very similar to events: each mutation has a string **type** and a **handler**. The handler function is where we perform actual state modifications, and it will receive the state as the first argument:

``` js
Expand Down
2 changes: 2 additions & 0 deletions docs/guide/plugins.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Plugins

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cvp8ZkCR" target="_blank" rel="noopener noreferrer">Try this lesson on Scrimba</a></div>

Vuex stores accept the `plugins` option that exposes hooks for each mutation. A Vuex plugin is simply a function that receives the store as the only argument:

``` js
Expand Down
4 changes: 4 additions & 0 deletions docs/guide/state.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

### Single State Tree

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cWw3Zhb" target="_blank" rel="noopener noreferrer">Try this lesson on Scrimba</a></div>

Vuex uses a **single state tree** - that is, this single object contains all your application level state and serves as the "single source of truth". This also means usually you will have only one store for each application. A single state tree makes it straightforward to locate a specific piece of state, and allows us to easily take snapshots of the current app state for debugging purposes.

The single state tree does not conflict with modularity - in later chapters we will discuss how to split your state and mutations into sub modules.
Expand Down Expand Up @@ -58,6 +60,8 @@ const Counter = {

### The `mapState` Helper

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/c8Pz7BSK" target="_blank" rel="noopener noreferrer">Try this lesson on Scrimba</a></div>

When a component needs to make use of multiple store state properties or getters, declaring all these computed properties can get repetitive and verbose. To deal with this we can make use of the `mapState` helper which generates computed getter functions for us, saving us some keystrokes:

``` js
Expand Down
2 changes: 2 additions & 0 deletions docs/guide/testing.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Testing

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cPGkpJhq" target="_blank" rel="noopener noreferrer">Try this lesson on Scrimba</a></div>

The main parts we want to unit test in Vuex are mutations and actions.

### Testing Mutations
Expand Down
2 changes: 2 additions & 0 deletions docs/ja/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ new Vue({
これが Vuex の背景にある基本的なアイディアであり、[Flux](https://facebook.github.io/flux/docs/overview.html)、 [Redux](http://redux.js.org/) そして [The Elm Architecture](https://guide.elm-lang.org/architecture/)から影響を受けています。
他のパターンと異なるのは、Vuex は効率的な更新のために、Vue.js の粒度の細かいリアクティビティシステムを利用するよう特別に調整して実装されたライブラリだということです。

あなたがもし対話型の方法でVuexを学びたいのであれば、[Scrimba](https://scrimba.com/g/gvuex)のVuexコースをぜひ試してみてください。

![vuex](/vuex.png)

### いつ、Vuexを使うべきでしょうか?
Expand Down
2 changes: 2 additions & 0 deletions docs/ja/guide/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Vuex 入門

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cMPa2Uk" target="_blank" rel="noopener noreferrer">Scrimba のレッスンを試す</a></div>

Vuex アプリケーションの中心にあるものは**ストア**です。"ストア" は、基本的にアプリケーションの **状態(state)** を保持するコンテナです。単純なグローバルオブジェクトとの違いが 2つあります。

1. Vuex ストアはリアクティブです。Vue コンポーネントがストアから状態を取り出すとき、もしストアの状態が変化したら、ストアはリアクティブかつ効率的に更新を行います。
Expand Down
2 changes: 2 additions & 0 deletions docs/ja/guide/actions.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# アクション

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/c6ggR3cG" target="_blank" rel="noopener noreferrer">Scrimba のレッスンを試す</a></div>

アクションはミューテーションと似ていますが、下記の点で異なります:

- アクションは、状態を変更するのではなく、ミューテーションをコミットします。
Expand Down
2 changes: 2 additions & 0 deletions docs/ja/guide/forms.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# フォームの扱い

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cqKRgEC9" target="_blank" rel="noopener noreferrer">Scrimba のレッスンを試す</a></div>

厳格モードで Vuex を使用するとき、Vuex に属する状態の一部で `v-model` を使用するのは少しトリッキーです:

``` html
Expand Down
2 changes: 2 additions & 0 deletions docs/ja/guide/getters.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# ゲッター

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/c2Be7TB" target="_blank" rel="noopener noreferrer">Scrimba のレッスンを試す</a></div>

例えば項目のリストをフィルタリングしたりカウントするときのように、ストアの状態を算出したいときがあります。

``` js
Expand Down
2 changes: 2 additions & 0 deletions docs/ja/guide/modules.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# モジュール

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cqKK4psq" target="_blank" rel="noopener noreferrer">Scrimba のレッスンを試す</a></div>

単一ステートツリーを使うため、アプリケーションの全ての状態は、一つの大きなストアオブジェクトに内包されます。しかしながら、アプリケーションが大きくなるにつれて、ストアオブジェクトは膨れ上がってきます。

そのような場合に役立てるため Vuex ではストアを**モジュール**に分割できるようになっています。それぞれのモジュールは、モジュール自身の状態(state)、ミューテーション、アクション、ゲッター、モジュールさえも内包できます(モジュールをネストできます)- トップからボトムまでフラクタル構造です:
Expand Down
2 changes: 2 additions & 0 deletions docs/ja/guide/mutations.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# ミューテーション

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/ckMZp4HN" target="_blank" rel="noopener noreferrer">Scrimba のレッスンを試す</a></div>

実際に Vuex のストアの状態を変更できる唯一の方法は、ミューテーションをコミットすることです。Vuex のミューテーションはイベントにとても近い概念です: 各ミューテーションは**タイプ**と**ハンドラ**を持ちます。ハンドラ関数は Vuex の状態(state)を第1引数として取得し、実際に状態の変更を行います:

``` js
Expand Down
2 changes: 2 additions & 0 deletions docs/ja/guide/plugins.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# プラグイン

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cvp8ZkCR" target="_blank" rel="noopener noreferrer">Scrimba のレッスンを試す</a></div>

Vuex ストア は、各ミューテーションへのフックを公開する `plugins` オプションを受け付けます。 Vuex プラグインは、単一の引数としてストアを受けつけるただの関数です:

``` js
Expand Down
4 changes: 4 additions & 0 deletions docs/ja/guide/state.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

### 単一ステートツリー

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cWw3Zhb" target="_blank" rel="noopener noreferrer">Scrimba のレッスンを試す</a></div>

Vuex は **単一ステートツリー (single state tree)** を使います。つまり、この単一なオブジェクトはアプリケーションレベルの状態が全て含まれており、"信頼できる唯一の情報源 (single source of truth)" として機能します。これは、通常、アプリケーションごとに1つしかストアは持たないことを意味します。単一ステートツリーは状態の特定の部分を見つけること、デバッグのために現在のアプリケーションの状態のスナップショットを撮ることを容易にします。

単一ステートツリーはモジュール性と競合しません。以降の章で、アプリケーションの状態とミューテーション(変更)をサブモジュールに分割する方法について説明します。
Expand Down Expand Up @@ -57,6 +59,8 @@ const Counter = {

### `mapState`  ヘルパー

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/c8Pz7BSK" target="_blank" rel="noopener noreferrer">Scrimba のレッスンを試す</a></div>

コンポーネントが複数のストアのステートプロパティやゲッターを必要としているとき、これらすべてにおいて、算出プロパティを宣言することは繰り返しで冗長です。これに対処するため、算出ゲッター関数を生成し、いくつかのキーストロークを省くのに役立つ `mapState` ヘルパーを使うことができます:

```js
Expand Down
2 changes: 2 additions & 0 deletions docs/ja/guide/testing.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# テスト

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cPGkpJhq" target="_blank" rel="noopener noreferrer">Scrimba のレッスンを試す</a></div>

私たちが Vuex でユニットテストしたい主な部分はミューテーションとアクションです。

### ミューテーションのテスト
Expand Down
2 changes: 2 additions & 0 deletions docs/kr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ new Vue({

이는 [Flux](https://facebook.github.io/flux/docs/overview.html), [Redux](http://redux.js.org/), [The Elm Architecture](https://guide.elm-lang.org/architecture/)에서 영감을 받은 Vuex의 기본 아이디어 입니다. 다른 패턴과 달리 Vuex는 Vue.js가 효율적인 업데이트를 위해 세분화된 반응 시스템을 활용하도록 특별히 고안된 라이브러리입니다.

대화식으로 Vuex를 배우고 싶다면 [Scrimba]((https://scrimba.com/g/gvuex))의 Vuex 과정에 등록하십시오.

![vuex](/vuex.png)

### 언제 사용해야 하나요?
Expand Down
2 changes: 2 additions & 0 deletions docs/kr/guide/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# 시작하기

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cMPa2Uk" target="_blank" rel="noopener noreferrer">Scrimba에서이 수업을 해보십시오.</a></div>

모든 Vuex 애플리케이션의 중심에는 **store** 가 있습니다. "저장소"는 기본적으로 애플리케이션 **상태** 를 보유하고있는 컨테이너입니다. Vuex 저장소가 일반 전역 개체와 두 가지 다른 점이 있습니다.

1. Vuex store는 반응형 입니다. Vue 컴포넌트는 상태를 검색할 때 저장소의 상태가 변경되면 효율적으로 대응하고 업데이트합니다.
Expand Down
2 changes: 2 additions & 0 deletions docs/kr/guide/actions.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# 액션

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/c6ggR3cG" target="_blank" rel="noopener noreferrer">Scrimba에서이 수업을 해보십시오.</a></div>

액션은 변이와 유사합니다. 몇가지 다른 점은,

- 상태를 변이시키는 대신 액션으로 변이에 대한 커밋을 합니다.
Expand Down
2 changes: 2 additions & 0 deletions docs/kr/guide/forms.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# 폼 핸들링

<div class="scrimba"><a href="https://scrimba.com/p/pnyzgAP/cqKRgEC9" target="_blank" rel="noopener noreferrer">Scrimba에서이 수업을 해보십시오.</a></div>

strict 모드로 Vuex를 사용하는 경우 Vuex에 포함된 부분에 `v-model`을 사용하는 것은 약간 까다로울 수 있습니다.

``` html
Expand Down
Loading