【TypeScript × Nuxt.js】연습이 테라 초간이 ToDo 앱 만들었습니다【입문】
또 이번 Composition-API에도 도전했습니다.
개발 환경
완제품
index.vue
<template>
<div class="container">
<h1>Nuxt-ToDo-App</h1>
<br />
<h3>
<form @submit.prevent="addTask()">
Add Task : <input v-model="task" type="text" />
</form>
<br /><br />
<table>
<tbody>
<tr v-for="(task, index) in tasks" :key="task.id">
<td :class="{ done: task.isDone }">{{ task.name }}</td>
<td
v-if="task.isDone"
class="pointer"
@click="task.isDone = !task.isDone"
>
[제]
</td>
<td v-else class="pointer" @click="task.isDone = !task.isDone">
[미]
</td>
<td class="pointer" @click="removeTask(index)">[x]</td>
<br />
<br />
</tr>
</tbody>
</table>
</h3>
</div>
</template>
<script lang="ts">
import { defineComponent, reactive, toRefs } from '@nuxtjs/composition-api'
interface Task {
name: string
isDone: boolean
}
export default defineComponent({
setup() {
const state = reactive({
task: '',
tasks: [] as Task[],
})
const addTask = () => {
const taskObj: Task = { name: state.task, isDone: false }
state.tasks.push(taskObj)
state.task = ''
}
const removeTask = (index: number) => {
state.tasks.splice(index, 1)
}
return {
...toRefs(state),
addTask,
removeTask,
}
},
})
</script>
<style>
.container {
text-align: center;
}
테이블 {
margin: 0 auto;
}
.done {
text-decoration: line-through 3px;
}
.pointer {
cursor: pointer;
}
</style>
TypeScript × Nuxt.js × compositon-API의 기사는 지금은 아직 적지요
뭔가 좋은 교재가 있으면 좋지만 ...
Reference
이 문제에 관하여(【TypeScript × Nuxt.js】연습이 테라 초간이 ToDo 앱 만들었습니다【입문】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/higa02/items/6b320923a4e4601d5e77
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【TypeScript × Nuxt.js】연습이 테라 초간이 ToDo 앱 만들었습니다【입문】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/higa02/items/6b320923a4e4601d5e77텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)