w3ctech

React.js 实际使用遇到的小问题分享

React.js 中通过改变组件的 state 来改变组件的 html。 这之间的过程是交给框架处理的,框架通过 diff 算法找出需要变更的节点进行变更。

但在实际使用过程中发现, 比如对于一个 <img> 标签来说,我们需要改变它的 src, 其实有两种方法,这两种方法在某种情况下得到的效果是完全不同的。

方法一是 $('img').attr('src', '...') 直接修改 img 标签的 src 属性。

方法二是 $('img').replaceWith($('<img>').attr('src', '....')) ,直接将当前 img 替换成一个新的 img。

当 img 标签原先存在图片的情况下。 两种方法产生的效果其实是不同的 具体可见

http://codepen.io/hxgdzyuyi/pen/LVooxp

唔, 但是 React 默认的处理方式是方法一。

解决方案

使用 react 的 key 属性强制刷新标签

  <img src="..." key="_.uniqueId()" />
w3ctech微信

扫码关注w3ctech微信公众号

共收到2条回复

  • 还真遇到了类似的问题,谢谢分享!

    回复此楼
  • 在火狐下,没发现有什么异常啊 似乎就第一次切换的时候,有闪动?

    回复此楼