zoukankan      html  css  js  c++  java
  • react key值

    1、key的作用

    react利用key来识别组件,它是一种身份标识标识,就像我们的身份证用来辨识一个人一样。

    react使用的是diff算法决定哪些元素需要重新渲染, 每个节点都有唯一key值, key相同,就不会重新渲染节点, 不同则渲染。
     
    2、可以用index为下标么? 答案肯定是否,为什么不行,下面我们举个例子,就知道了
     
     state = {
         data: ['小花', '小白', '小蓝'],
      }
     onClick = () => {
        this.state.data.splice(1,1);
        this.setState({
        //   data: ['小花', '小蓝'],
          data: this.state.data,
        })
      }
      render () {
        const { data } = this.state
        return (
          <div>
            {
              data.map((dt, index) => {
                return (
                   <div key={index}> {dt} <input type="text" /></div>
                )
              })
            }

            <button onClick={this.onClick} >点击我</button>
          </div>
        )
      }

    点击前效果

    点击后:

    总结:使用index,从上面例子可以看出,首先,他会先去比较key值, index为2的因为没有了,所以他就直接干掉了, 0,1都有, 但是0的值没有变,所以这个节点不会渲染,
     * index为1的值变了,所以这个div会先删除,重新构造出新的dom, index为1的input因为没有值,所以也不会渲染,所以最后出的结果就是上面的样子。
     
    /**
     * 解决方法一、 不用index为下标, 然后每条数据用id值
     * 解决方法二、 安装shortid 插件, 生成唯一的key值 
     *  步骤:1.官网 https://www.npmjs.com/package/shortid  
     *            2.安装 cnpm i shortid -S 
     *            3.引用 import shortid from 'shortid'
     *            4. 调用  data:[ {id: shortid.generate(), name:'小花'} ]
     */
    // 不能使用时间戳 ,当id为 时间戳时候, react运行代码速度比较快, 所以会导致id 一样   Date.now()
  • 相关阅读:
    用DirectX Audio和DirectShow播放声音和音乐(7)
    [转载]如何自学中医
    光照示例
    用DirectX Audio和DirectShow播放声音和音乐(5)
    DirectX 图形接口指南
    程序员的灯下黑:临渊羡鱼和退而织网
    使用DirectInput进行交互(3)
    Win32开发中最易踏上的地雷
    D3D中粒子效果实现示例
    用DirectX Audio和DirectShow播放声音和音乐(3)
  • 原文地址:https://www.cnblogs.com/yetiezhu/p/12753847.html
Copyright © 2011-2022 走看看