目前,我有单独的组件CreateUser.vue
和EditUser.vue
,它们的形式很大。
CreateUser
的路线是/users
EditUser
的路线是/users/:username
。后端API也不同:
example.com/users
)和example.com//users/:username
)。 在EditUser
中,username
字段也是只读,因为一旦创建就无法对其进行编辑,否则CreateUser
和EditUser
模板是相同的,但是JavaScript部分不同。
问题:
我如何将其组合为一个组件 UserForm.vue
并消除CreateUser.vue
和EditUser.vue
?
在主UI中,有一个按钮Create User
,该按钮路由到CreateUser
组件。在用户列表视图中,每行都有一个按钮Edit
,该按钮路由到EditUser
组件。
我正在使用Vue路由器定义类似于以下内容的路由:
{
path: '/users',
name: 'createUser',
component: CreateUser
},
{
path: '/users/:id',
component: EditUser,
name: 'editUser'
}
答案 0 :(得分:2)
您可以通过路由器配置中的props
属性https://gist.github.com/benmarwick/f3e0cafe668f3d6ff6e5进入您的组件,然后按to render the necessary inputs...
上面的答案使用它
{
path: '/users',
name: 'createUser',
component: UserForm
props: {editMode: false}
},
{
path: '/users/:id',
name: 'editUser'
component: UserForm,
props: {editMode: true}
}
答案 1 :(得分:1)
只需在您的 UserForm.vue
上添加一个属性props: {
currentAction : {
type : String,
default: 'create',
required: true
},
},
您必须在
处传递此字符串<user-form :currentAction="create"></user-form>
然后在您的组件中使用它来调用必要的方法createUser()或updateUser()。还可以使用它来呈现必要的输入和/或计算必要的计算属性。
根据我的观察,该属性必须是主界面上的数据属性,在显示用户表单之前,您必须更改此属性。