el-select组件Key为NaN后崩溃

598 阅读1分钟

1.问题

在使用el-select组件时,如key值设置NaN后,会导致整个页面卡死。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8"> 
  <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.9/theme-chalk/index.css">
  <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.0-alpha.6/vue.min.js"></script> 
  <script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.9/index.js"></script> 
</head>
<body>
  <div id="app">
    <el-select  placeholder="请选择">
        <el-option
          v-for="(item,i) in options"
          :key="item.value"
          :label="item.label"
          :value="item.label">
        </el-option>
      </el-select> 
  </div>
</body> 
  <script>
    new Vue({
      el: '#app',
      data: function() {
        return { visible: false,
            options: [{
                value: NaN,  //这里设置 NaN 会导致整个页面挂掉
                label: '黄金糕'
                },
            ]
        }
      }
    })
  </script>
</html>

2.官网查找

image.png

image.png

image.png 得到 sorry ,we have no plan to support this.

3.看文档描述

image.png option 属性默认没有key属性说明

4.试试其他组件

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8"> 
  <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.9/theme-chalk/index.css">
  <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.0-alpha.6/vue.min.js"></script> 
  <script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.9/index.js"></script> 
</head>
<body>
  <div id="app"> 
    <h1>el-checkbox</h1>
    <el-checkbox-group v-model="checkedCities"> 
      <el-checkbox 
      v-for="(item,i) in options"
      :key="item.value"
      :label="item.label"
      :value="item.label"
      ></el-checkbox> 
    </el-checkbox-group> 

    <h1>el-table</h1>
    <el-table
    :data="options" 
    row-key="value"   >
    <el-table-column
    prop="value"
    label="value"
    sortable
    width="180">
  </el-table-column>
    <el-table-column
      prop="label"
      label="label"
      sortable
      width="180">
    </el-table-column> 
  </el-table> 
  
  <h1>el-dropdown</h1>
    <el-dropdown>
      <span class="el-dropdown-link">
        下拉菜单<i class="el-icon-arrow-down el-icon--right"></i>
      </span>
      <el-dropdown-menu slot="dropdown">
        <el-dropdown-item
        v-for="(item,i) in options"
        :key="item.value"
        :label="item.label"
        :value="item.label"  
        >{{item.label}}</el-dropdown-item>
      </el-dropdown-menu>
    </el-dropdown>

  </div>
</body> 
  <script> 
    new Vue({
      el: '#app',
      data: function() {
        return  {
          options: [{
                        value: NaN,  // 这里设置 NaN 会导致整个页面挂掉
                        label: '黄金糕1'
                    },{
                        value: '',  // 这里设置 NaN 会导致整个页面挂掉
                        label: '黄金糕2'
                    },
                ], 
                checkedCities: []
        }
      },
      methods: { 
      }, 
    })
  </script>
</html> 

image.png

结果没问题

待续