「Vue.jsでCRUD操作を行ってみよう」の感想・備忘録

スポンサーリンク

kindle本「Vue.jsでCRUD操作を行ってみよう」のまとめ。

点数

70点

感想

React版とほぼ同じ内容だった。

役に立つ情報は少なかった。

Vue.js + Fetch APIによるCRUD操作

  1. npm init -y
  2. npm install @vue/cli
  3. vue create vueapp
    (defaultを選択)
  4. App.vueを修正
<template>
  <div>
    <p>サイト名:<input v-model="name" placeholder="Site Name"></p>
    <p>URL:<input v-model="url" placeholder="Site URL"></p>
    <p>
      <button @click="addTodo">登録</button>
    </p>
    <table>
      <tr v-for="site in sites" :key="site.id">
        <td>{{ site.name }}</td>
        <td>{{ site.url }}</td>
        <td><button @click="deleteTodo(site.id)">削除</button></td>
      </tr>
    </table>
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      name: '',
      url: 'https://',
      sites: []
    }
  },
  created() {
    fetch('/sites')
    .then((res) => res.json())
    .then((data) => {
      this.sites = data;
    })
    .catch((err) => {
      console.log(err);
    });
  },
  methods: {
    addTodo() {
      fetch('/sites', {
        method: 'POST',
        headers: {
          'Content-type': 'application/json; charset=UTF-8'
        },
        body: JSON.stringify({
          id: this.sites.length + 1,
          name: this.name,
          url: this.url,
        }),
      })
      .then((res) => res.json())
      .then((data) => {
        this.name = '';
        this.url = 'https://';
        this.sites.push(data)
      }).catch((err) => {
        console.log(err);
      });
    },
    deleteTodo(id) {
      fetch('/sites', {
        method: 'DELETE',
        headers: {
          'Content-type': 'application/json; charset=UTF-8'
        },
        body: JSON.stringify({
          id: id,
        }),
      })
      .then(() => {
        this.sites = this.sites.filter((site) => {
          return site.id !== id;
        })
      })
      .catch((err) => {
        console.log(err);
      });
    }
  }
}
</script>

<style>
table {
  border-collapse: collapse;
}

td {
  border: solid 1px #000;
  padding: 6px;
}
</style>

Vue CLIでのESLint設定

Vue CLIでdefaultを選択(またはManuallyでESLint with error prevention onlyを選択)すると、package.jsonのeslintConfig のextendsにeslint:recommendedが設定される。

recommendedは以下のページでレ点が入っているルールが適用される。
https://eslint.org/docs/rules/

ルールを変更したい場合は、package.jsonのeslintConfigのrulesに定義する。
値はoff, warn, errorのいずれか。

"rules": {
  "no-extra-semi”: "off"
}

コメント