vue.js - Vuex 中具有多个属性值的有效负载
问题描述
我有这个演示:https ://codepen.io/Albvadi/pen/abdVZxO
我想在有效载荷中传递标题和类,但只读取类......
如果我将@click
事件更改为传递对象,则 JS 不会编译:
// Compiles but dont work
<button
class="btn btn-primary"
@click="addComponent('primary', 'My Title')"
>PrimaryAlert</button>
// No compile
<button
class="btn btn-primary"
@click="addComponent({'primary', 'My Title'})"
>PrimaryAlert</button>
错误编译
Vue warn]: Error compiling template:
invalid expression: Unexpected token ',' in
addComponent({'primary', 'My Title'})
Raw expression: @click="addComponent({'primary', 'My Title'})"
19 | <div class="row">
20 | <div class="col">
21 | <button class="btn btn-primary" @click="addComponent({'primary', 'My Title'})">Primary
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
22 | Alert</button>
23 | <button class="btn btn-warning" @click="addComponent('warning')">Warning
怎么了?
解决方案
您只能将一个有效负载数据发送到参数的突变,因此如果您需要发送多个数据,则需要发送一个对象,将您的更改@click
为:
@click="addComponent({classAlert: 'primary', title: 'My Title'})"
@click="addComponent({classAlert: 'warning'})"
@click="addComponent({classAlert: 'danger'})"
@click="addComponent({classAlert: 'dark'})"
和你的突变参数:
// destructuring the parameter
addComponent(state, { classAlert, title }) {
console.log(classAlert);
console.log(title);
}
// not destructed version
addComponent(state, data) {
const classAlert = data.classAlert;
const title = data.title;
console.log(classAlert);
console.log(title);
}
推荐阅读
- r - 用于 mutate 的矢量化线性插值函数
- html - 向 VueDraggable (sortable.js) 添加拖出功能
- sql-server - SQL Server - 将每天的记录转换为日期范围(有间隙)
- angular - 过滤 Observable 中的第一项
- python - 在 SQLAlchemy 中运行合并查询后 Oracle DB 表未更新
- jenkins-x - 为什么在使用 Jenkins x 时需要在同一个 K8 实例上进行 staging 和 production
- c# - 如何访问 DbMigration 中的 AppSetting?
- laravel - IDP Init SSO 流与 SimpleSAMLPhp + Laravel 应用程序(Saml2 包作为 SP)
- c# - 添加新控件时,是否有任何方法可以将面板上控件的 Z 顺序设置为始终位于顶部?
- javascript - 为什么装饰器会抛出无效类型的错误