message: fix the logic of keyed vdom
diff: @@ -80,16 +80,24 @@ function update(element: Element, node: VNode) {
  }
  } else {
  const key = child.props && child.props['key'];
  - if (key && el.key !== key) {
  + if (key) {
  + if (el.key === key) {
  + update(element.childNodes[i], child);
  + } else {
  const old = key && keyCache[key];
  if (old) {
  element.replaceChild(old, el);
  element.appendChild(el);
  + update(element.childNodes[i], child);
  + } else {
  + element.replaceChild(create(node), el);
  }
  }
  + } else {
  update(element.childNodes[i], child);
  }
  }
  + }
  let n = element.childNodes.length;
  while (n > len) {
  