javascript - react中组件的key属性
巴扎黑
巴扎黑 2017-04-11 13:06:41
[JavaScript讨论组]

这个key属性的含义是啥,当删除列表的某一项时,为啥总是删除的是最后一项的内容。听说更新前后react渲染会根据key值来决定怎么渲染,当一样时,不重新渲染,不一样时就重新渲染?感觉好像有点不太对。。。

巴扎黑
巴扎黑

全部回复(2)
PHP中文网

React 实践心得:key 属性的原理和用法 —— 作者:叶斋

PHP中文网

你说的是对的,应该知道React使用virtual dom来比较UI状态的变化,如果DOM中的某一节点更新时重新渲染,一样的话就不渲染。key属性的作用就在与解决渲染List的这种难题,简单来说,例如你有一个List:

<li>Orange</li> <li>Banana</li>

如果想更新成

<li>Apple</li> <li>Orange</li>

那dom比较算法就可以有多种选择,例如销毁两个,生成两个新的代替,或者销毁banana,在orange前插入apple等等,当list多的时候情况就比较复杂,所以React为了使得Dom比较算法最快,需要你提供给每一个list元素一个特殊的key,这样就容易比较前后两个大型的List了,帮助React如何移动、替代、销毁、插入节点,例如

let List = this.props.fruits.map((fruit) => {
            return <FruitList key={fruit.id}
                              name={fruit.name}
                    />
         });
 
return (
    <p>
        {List}
    </p>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号