初心者です。
こちらを参考にLaravel + Vue.jsでフォロー機能を実装しています。
https://crieit.net/posts/Laravel-Vue-js
vueの部分でtypescriptで書かれているのですが、自分はvue.jsの形で書きたいです。
ここ参考にしながらだったらtypescriptからvueに自分で出来るんじゃない?
というようなのサイトなどあればぜひ教えていただきたいです。
下記、typescriptからjavascript(vue.js)に書き直したい部分になります。
import { Vue, Component, Prop } from 'vue-property-decorator' import axios from 'axios' @Component export default class UserFollow extends Vue { @Prop({ type: String, required: true }) id!: string @Prop({ type: Boolean, default: false }) following!: boolean currentFollowing = this.following sending = false
async follow() { if (this.sending) { return } this.sending = true const data = { id: this.id } await axios.post('/follow-users', data) this.currentFollowing = true this.sending = false } async unfollow() { if (this.sending) { return } this.sending = true await axios.delete(`/follow-users/${this.id}`) this.currentFollowing = false this.sending = false }
よろしくお願いします。
追記
手探りで書きながらです。(下にエラーあります)
<script> export default { data() { return{ currentFollowing: this.following, sending: false } }, props: { id: { type: String, required: true }, following: { type: Boolean, default: false } }, methods: { async follow() { if(this.sending){ return } this.sending = true const data = { id: this.id } await axios.post('/follow-users', data) this.currentFollowing = true this.sending = false }, async unfollow() { if(this.sending){ return } this.sending = true await axios.delete(`/follow-users/${this.id}`) this.currentFollowing = false this.sending = false } } } </script>
app
1const router = new VueRouter({ 2 routes: [ 3 { 4 path: '/follow/:id', 5 name: 'user.follow', 6 component: FollowComponent, 7 props: true 8 } 9 ] 10}) 11
<router-link v-bind:to="{name: 'user.follow'}"> <button class="btn btn-primary" type="submit">Follow</button> </router-link>
エラー [Vue warn]: Missing required prop: "id"
あなたの回答
tips
プレビュー