javascript - Vue Storefront核心模块如何扩展
问题描述
我想覆盖购物车模块存储中的操作。我正在尝试CartModule
通过遵循此链接
Extending and Overriding Modules Doc来扩展它
我/src/modules/cart/index.ts
用以下代码创建了一个文件
import { VueStorefrontModuleConfig, extendModule, VueStorefrontModule } from '@vue-storefront/core/lib/module'
import { CartModule } from '@vue-storefront/core/modules/cart'
import { cartModule } from './store'
const cartExtend: VueStorefrontModuleConfig = {
key: 'cart',
store: {modules: [{key: 'cart', module: cartModule}]},
afterRegistration: function () {
console.log('Cart module extended')
}
}
extendModule(cartExtend)
export const registerModules: VueStorefrontModule[] = [CartModule]
我收到CarModule
类型不匹配的错误VueStorefrontModule
我也不知道下一步该怎么做才能使其有效。文档对此并不清楚。请帮忙。谢谢
解决方案
如果您想覆盖模块的操作,您不想扩展模块而是存储。
这是示例:
Vuestorefront 有 CartModule (在核心中),您需要更改操作代码refreshTotals
。
在文件中编码/src/modules/cart/index.ts
:
import {StorefrontModule} from '@vue-storefront/core/lib/modules';
import {extendStore} from '@vue-storefront/core/helpers';
const cartModule = {
action: {
async refreshTotals({dispatch}, payload) {
//
// your new (and better!) code ;-)
//
}
},
}
export const MyAwesomeCart: StorefrontModule = function () {
extendStore('cart', cartModule);
}
在最后一步注册这个你的新模块:
..
...
import {CartModule} from '@vue-storefront/core/modules/cart';
import {MyAwesomeCart} from "modules/cart/index";
export function registerClientModules() {
registerModule(CartModule); // original module
registerModule(MyAwesomeCart); // your new overwiritng module
...
..
推荐阅读
- apache - 无法连接到 Google Compute Engine 上的 Apache
- excel - 如何沿已合并具有 VBA 格式条件的单元格的行添加底部边框
- c++ - 有没有更好的方法将流上的函数链接在一起?
- tensorflow - 保存 Tensorflow 对象检测 API 中使用的正负样本
- c# - 如何修复“解析 XML 时出错:未关闭的令牌 (APT0000)”?(Xamarin.Forms)
- javascript - 如何确定 elements.parentNode 或 Ancestor 是否有类?
- python-3.x - ip 来自 python-digitalocean
- python-3.x - 如何更改自定义 Keras 数据生成器的类标签
- python - 如何在没有参数的django模板标签上调用条件语句
- javascript - 将 oldSettings 与 newSettings 相结合