new storefront({
...
mixins: {
global: {
shouldUpdate: (stateChange, nextOpts) => true,
},
custom: {
tracking: {
trackClick: (e) => trackerService.click(e);
},
},
}
});There are 2 kinds of mixins.
globalgets applied to all tagscustomare defined within the tag itself and only apply to that tag
| Property | Type | Default |
|---|---|---|
global |
GlobalMixin | {} |
custom |
CustomMixins | {} |
global
The mixin to automatically apply to all tags. This mixin is applied after all the standard StoreFront mixins are applied, so it can be used to override StoreFront functionality.
The lifecycle function init() cannot be overridden by the global mixin.
| Property | Type | Default | Required |
|---|---|---|---|
shouldUpdate |
boolean | ({ state: object }, object) => boolean | false |
shouldUpdateA function to determine if a component should update. StoreFront provides its own
shouldUpdatefunction that makes a component update only if it has changed, but it is not enabled by default.
true: Use the StoreFront-provided function.false: DisableshouldUpdateand always allow components to update.- function: Use the given function instead. The function should return
trueif the component should update andfalseotherwise. The first argument to the function is an object with the propertystatethat contains the new state of the component, and the second argument contains the new props of the component.
custom
Named mixins that are available on-demand to tags.
To apply one of these mixins, add this to your tag’s constructor:
this.mixin(<name_of_mixin>);
To illustrate, with the mixins configured in the example at the top, you
can apply the custom mixin tracking like so:
constructor() {
this.mixin('tracking');
}
Then you can use the trackClick() function defined in the mixin in
your JavaScript like this:
this.trackClick(e);
Or you can use it in your HTML like this:
<gb-button on-click="{ trackClick }">Click Me</gb-button>