我有a small app that lets you add, remove and edit recipes to a list of recipes。Vue多用途組件?
添加路線/add
並且編輯路線爲/edit
。我正在使用AddRecipe
組件這兩個路由。
如果路由包含'edit'
,組件的行爲將略有不同,即輸入字段預填充了您正在編輯的值。
這裏是AddRecipeForm.vue
,共享組件:
<template>
<div>
<form class="form">
<input v-model="recipe.name" placeholder="Recipe Name">
<textarea v-model="recipe.description" placeholder="Recipe Description..." rows="10"></textarea>
<button :disabled="nothingEntered()" @click.prevent="addRecipe">Submit</button>
</form>
</div>
</template>
<script>
export default {
name: 'AddRecipeForm',
data() {
return {
recipe: this.isEdit()
? this.$store.state.recipes[this.$route.params.id]
: {
name: '',
description: ''
}
}
},
methods: {
isEdit() {
return this.$route.path.includes('edit')
},
addRecipe() {
if (this.isEdit()) {
this.$store.dispatch('addRecipe', this.recipe)
} else {
this.$store.dispatch('addRecipe', {
id: Date.now(),
...this.recipe
})
}
this.$router.push('/')
},
nothingEntered() {
return !this.recipe.name || !this.recipe.description
}
},
}
</script>
我想有這個問題更好的解決方案。例如,如果項目後期還需要更多視圖,那麼還需要組件?如果我想要一個乾淨可讀的可重用組件,我無法繼續檢查組件中的路由。
對於需要相同視圖的路由,你最喜歡的處理方式是什麼?