【问题标题】:React + immutableJS renders some weird output in old browsersReact + immutableJS 在旧浏览器中呈现一些奇怪的输出
【发布时间】:2015-10-26 11:08:04
【问题描述】:

在一些不是最新的浏览器中,我的 ReactJS 网站输出奇怪的 id,看起来像 immutableJS 对象的内部结构 这是 IE10 中的渲染:

在 Chrome 和 Firefox 中,一切看起来都不错。 这是呈现第一个 sn-p 的代码:

const winner = this.props.worldviews.sort((a, b) => a.get('voteCount') < b.get('voteCount')).slice(0, 1).map(worldview => { return ( <p>{worldview.get('title')}: {worldview.get('voteCount')} <i className='icon-check'></i></p> ); });

this.props.worldviews 是 immutableJS 对象的列表。

我在这里做错了什么?

【问题讨论】:

  • @DominicTobias 在这个确切的情况下只有一项(见slice(0,1)),这就是原因。在其他列表中,我确实使用了一个键,但它没有帮助。从 ImmutableJS 转换为普通数组确实有帮助,请参阅我的答案。

标签: javascript reactjs immutable.js


【解决方案1】:

如果我在这样的地图结果上调用.toArray(),这个问题就解决了:

const winner = this.props.worldviews.sort((a, b) => a.get('voteCount') < b.get('voteCount')).slice(0, 1).map(worldview => { return ( <p>{worldview.get('title')}: {worldview.get('voteCount')} <i className='icon-check'></i></p> ); }).toArray();

这应该不是问题,因为我使用的是支持任何迭代器的 React 0.13,但显然在旧浏览器上它会中断。

【讨论】:

  • 如果你不提供键,那么 React 将尝试获取索引,除非它似乎很难从那个自定义的不可变结构中获取索引。正如亚历山大所说,如果世界观对象上有一些独特的东西,比如 id,你可以给它一把钥匙。 (当你做 toArray 然后 react 知道如何获取索引)
猜你喜欢
  • 2015-03-22
  • 1970-01-01
  • 2012-01-29
  • 2020-04-25
  • 2019-03-12
  • 2013-11-30
  • 2014-05-17
  • 1970-01-01
  • 2013-08-03
相关资源
最近更新 更多