React 之key的使用

2018-06-14  本文已影响18人  那颗星_fcaf

key

我遇见的问题

在写项目的时候,项目中需要用到音频播放器,但是原始的 audio 标签在不同的浏览器,会有不同的样式,所以就自己写了一个简单的播放器,用于满足项目中播放音频的功能。
但是在使用的过程中,发现了两个问题:

解决第一个问题

面对这个问题,我开始的时候是在组件中,给 audio 添加监听 error 事件,因为音频比较多,这样在数据查询条件改变的时候,就要频繁的操作真的DOM,性能比较差,后来发现其实可以在音频播放的时候 catch 错误,提示用户。

const playPromise = audio.play();
        if (playPromise) {
          playPromise.then(() => {}).catch(() => {
            message.error('音频出错了');
          });
        }

解决第二个问题

面对这个问题,想到的就是这个组件并没有卸载重新渲染,而是改变了数据,导致的。
我们知道了问题所在,这样解决起来应该就好很多了。
嗯,我们用 Reactkey 属性来解决这个问题。
那就先来说一下 key 的作用吧:

key 的作用:

react 中的 key 属性,它是一个特殊的属性,它是出现不是给开发者用的,而是给 react 自己用的。
react 利用 key 来识别组件,它是一种身份标识。每个 key 对应一个组件,相同的 keyreact 认为是同一个组件,这样后续相同 key 对应的组件都不会被创建,而是会被传入新的数据,更新组件。
有了 key 属性后,就可以与组件建立了一种对应关系,react 根据 key 来决定是销毁重新创建组件还是更新组件。

key 的使用场景
key 其他的注意事项

当然除了为数据元素生成的组件要添加 key ,且 key 要稳定且唯一之外,还需要注意以下几点:

解决问题,给组件添加 key 属性,如下:

<AudioPlay key={item.requestId} item={item} src={src} type="ASR" idNum={item.id} id={`ASRplay${item.id}`} />
上一篇下一篇

猜你喜欢

热点阅读