Skip to content
This repository was archived by the owner on Sep 24, 2024. It is now read-only.

Commit cd5c889

Browse files
committed
Refactor Composer.vue with Vue Composition API
1 parent 8f457cc commit cd5c889

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

src/components/Composer.vue

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,38 @@
11
<template>
2-
<form
3-
id="send-message"
4-
class="flex flex-row flex-space-between"
5-
@submit.prevent
6-
>
7-
<input v-model="newMessage" type="text" name="text" class="flex flex-1" />
8-
<button class="button-primary" type="submit" @click="addMessage">
2+
<form class="flex flex-row flex-space-between" @submit.prevent="onSubmit">
3+
<input v-model="message.text" type="text" class="flex flex-1" />
4+
5+
<button class="button-primary" type="submit">
96
Send
107
</button>
118
</form>
129
</template>
1310

1411
<script>
12+
import { ref } from '@vue/composition-api'
13+
1514
export default {
1615
name: 'MessageComposer',
17-
props: {
18-
// eslint-disable-next-line vue/require-default-prop
19-
createMessage: Function
20-
},
21-
data() {
22-
return {
23-
newMessage: ''
16+
setup(props, context) {
17+
const { Message } = context.root.$FeathersVuex.api
18+
19+
const message = ref(new Message({ text: '' }))
20+
21+
function reset() {
22+
message.value = new Message({ text: '' })
23+
}
24+
function onSubmit() {
25+
if (!message.value.text) {
26+
return
27+
}
28+
message.value.save()
29+
reset()
2430
}
25-
},
26-
methods: {
27-
addMessage() {
28-
// Create a new message and then clear the input field
29-
this.createMessage({ text: this.newMessage }).then(this.clearMessage)
30-
},
31-
clearMessage() {
32-
this.newMessage = ''
31+
32+
return {
33+
message,
34+
reset,
35+
onSubmit
3336
}
3437
}
3538
}

0 commit comments

Comments
 (0)