- 1 Minute to read
- Print
- DarkLight
Redux Middleware
- 1 Minute to read
- Print
- DarkLight
Redux middleware solves different problems than Express or Koa middleware but in a conceptually similar way. It provides a third-party extension point between dispatching an action and the moment it reaches the reducer. People use Redux middleware for logging, crash reporting, talking to an asynchronous API, routing, and more.
Middleware with custom actions
Value | Description | Data type | Required |
---|---|---|---|
actions | Extends your actions and executes custom tracking code after dispatching your action. |
| - |
arguments0 | Your current state. |
| - |
arguments1 | Your current action. |
| - |
Integration
import { createStore, applyMiddleware, compose } from "redux";
import { WebtrekkSmartPixelReact, webtrekkMiddleware } from "@webtrekk-smart-pixel/react";
import { createStore, applyMiddleware, compose } from "redux";
import { WebtrekkSmartPixelReact, webtrekkMiddleware } from "@webtrekk-smart-pixel/next";
const enhancers = [];
const middleware = [webtrekkMiddleware({
"increment": (state, action) => {
WebtrekkSmartPixelReact.action({
name: action.type,
parameter: {1: state.count + ""}
});
WebtrekkSmartPixelReact.trackAction();
},
"decrement": (state, action) => {
WebtrekkSmartPixelReact.action({
name: action.type,
parameter: {1: state.count + ""}
});
WebtrekkSmartPixelReact.trackAction();
}
})];
const reducer = (state, action) => {
switch (action.type) {
case "increment": state.count + 1; return state;
case "decrement": state.count - 1; return state;
default: return state;
}
};
const composedEnhancers = compose(applyMiddleware(...middleware), ...enhancers);
const store = createStore(reducer, composedEnhancers);
store.dispatch({type: "increment"});
Dispatch with tracking data
Value | Description | Data type | Required | Default value |
---|---|---|---|---|
webtrekk.type | Defines which type of tracking data you are adding to the tracking pixel. You can use one of the following types: |
| Yes | |
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
webtrekk.data | Defines which data you are adding to the tracking pixel. |
| Yes | |
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
webtrekk.sendInstantly | If set to |
|
|
Integration
import { createStore, applyMiddleware, compose } from "redux";
import { WebtrekkSmartPixelReact, webtrekkMiddleware } from "@webtrekk-smart-pixel/react";
import { createStore, applyMiddleware, compose } from "redux";
import { WebtrekkSmartPixelReact, webtrekkMiddleware } from "@webtrekk-smart-pixel/next";
const enhancers = [];
const middleware = [webtrekkMiddleware()];
const reducer = (state, action) => {
switch (action.type) {
case "increment": state.count + 1; return state;
case "decrement": state.count - 1; return state;
default: return state;
}
};
const composedEnhancers = compose(applyMiddleware(...middleware), ...enhancers);
const store = createStore(reducer, composedEnhancers);
store.dispatch({
type: "increment",
webtrekk: {
type: "webtrekk/action",
sendInstantly: true,
data: {
name: "increment",
parameter: {1: store.getState().count + ""}
}
}
});