diff --git a/api/redraw.js b/api/redraw.js index 3f98b061..e975d286 100644 --- a/api/redraw.js +++ b/api/redraw.js @@ -28,7 +28,7 @@ module.exports = function($window) { renderService.setEventCallback(function(e) { if (e.redraw !== false) redraw() }) - + var callbacks = [] function subscribe(key, callback) { unsubscribe(key) diff --git a/docs/keys.md b/docs/keys.md index 0149418c..2c1e46d7 100644 --- a/docs/keys.md +++ b/docs/keys.md @@ -3,7 +3,6 @@ - [What are keys](#what-are-keys) - [How to use](#how-to-use) - [Debugging key related issues](#debugging-key-related-issues) -- [Avoid anti-patterns](#avoid-anti-patterns) --- @@ -152,3 +151,29 @@ var things = [ ] ``` +#### Avoid mixing keyed and non-keyed vnodes in the same array + +An array of vnodes must have only keyed vnodes or non-keyed vnodes, but not both. If you need to mix them, create a nested array. + +```javascript +// AVOID +m("div", [ + m("div", "a"), + m("div", {key: 1}, "b"), +]) + +// PREFER +m("div", [ + m("div", {key: 0}, "a"), + m("div", {key: 1}, "b"), +]) + + +// PREFER +m("div", [ + m("div", "a"), + [ + m("div", {key: 1}, "b"), + ] +]) +``` diff --git a/mithril.js b/mithril.js index 3ccb4917..d92059ec 100644 --- a/mithril.js +++ b/mithril.js @@ -918,7 +918,6 @@ var _11 = function($window) { renderService.setEventCallback(function(e) { if (e.redraw !== false) redraw() }) - var callbacks = [] function subscribe(key1, callback) { unsubscribe(key1)