diff --git a/src/components/tree/node.vue b/src/components/tree/node.vue
index 1ecfd3f..261b89d 100644
--- a/src/components/tree/node.vue
+++ b/src/components/tree/node.vue
@@ -14,7 +14,7 @@
                 <span :class="titleClasses" v-html="data.title" @click="handleSelect"></span>
                 <Tree-node
                         v-for="item in data.children"
-                        :key="item"
+                        :key="item.nodeKey"
                         :data="item"
                         :visible="data.expand"
                         :multiple="multiple"
diff --git a/src/components/tree/tree.vue b/src/components/tree/tree.vue
index c0f7e96..f6b5e22 100644
--- a/src/components/tree/tree.vue
+++ b/src/components/tree/tree.vue
@@ -2,7 +2,7 @@
     <div :class="prefixCls">
         <Tree-node
             v-for="item in data"
-            :key="item"
+            :key="item.nodeKey"
             :data="item"
             visible
             :multiple="multiple"
@@ -19,6 +19,8 @@
 
     const prefixCls = 'ivu-tree';
 
+    let key = 1;
+
     export default {
         name: 'Tree',
         mixins: [ Emitter, Locale ],
@@ -68,6 +70,7 @@
             updateData (isInit = true) {
                 // init checked status
                 function reverseChecked(data) {
+                    if (!data.nodeKey) data.nodeKey = key++;
                     if (data.children) {
                         let checkedLength = 0;
                         data.children.forEach(node => {
--
libgit2 0.21.4