javascript / expert
Snippet
Composable-Factory-Muster mit funktionaler Middleware-Pipeline
Durch Anwendung des funktionalen compose/reduceRight-Musters auf das Vue-Zustandsmanagement können Composables höherer Ordnung reaktive Aktualisierungen über eine erweiterbare Middleware-Kette abfangen, verändern oder anhalten.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import { ref } from 'vue';export function createMiddlewareComposable(...middlewares) {return function usePipelineInitialiser(initialValue) {const state = ref(initialValue);const dispatch = async (action) => {const runner = middlewares.reduceRight((next, middleware) => (ctx) => middleware(ctx, next),async (ctx) => { ctx.state.value = ctx.action.payload; });await runner({ state, action });};return { state, dispatch };};}
vue
Erklärung
1
(next, middleware) => (ctx) => middleware(ctx, next)
Verkettet Funktionen dynamisch in umgekehrter Reihenfolge zu einem verschachtelten Ausführungsstapel.
2
async (ctx) => { ctx.state.value = ctx.action.payload; }
Dient als finaler Reducer, der den Wert der reaktiven Ref-Variable aktualisiert.
3
await runner({ state, action });
Löst die Ausführung durch die gesamte asynchrone Middleware-Pipeline aus.