From 0d457c98acc4393c18e77b8ccdbed48265243d8d Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Thu, 10 Mar 2016 20:28:58 -0500 Subject: [PATCH] If a mutator has no return value (i.e., returns `undefined`), leave the subject unchanged (useful for in-place updates) --- src/create-cycle.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/create-cycle.js b/src/create-cycle.js index 0e58173..16e2d10 100644 --- a/src/create-cycle.js +++ b/src/create-cycle.js @@ -14,14 +14,14 @@ export default function createCycle(renderer, data={}) { // optionally key-specific mutation of data // eg: mutate('value', v => v*2 ) function mutate(fn, ...args) { - let key; + let key, r; if (typeof fn==='string') { key = fn; fn = args.splice(0, 1)[0]; } let p = key ? data[key] : data; - if (typeof fn==='function') p = fn(p, ...args); - else p = fn; + if (typeof fn!=='function') p = fn; + else if ( (r=fn(p, ...args))!==undefined ) p = r; if (key) data[key] = p; else data = p; if (!debounce) debounce = setTimeout(render, 1);