Safari中键上的Immutable.js映射

Safari中键上的Immutable.js映射,safari,reactjs,immutable.js,Safari,Reactjs,Immutable.js,我在Safari中遇到了一个奇怪的问题,控制台中出现了这个错误- 警告:任何键控对象的使用都应该在作为子对象传递之前包装在React.addons.createFragment(对象)中 进一步看,我已经将问题隔离到不可变集合上的映射。下面是代码片段- var items = Immutable.fromJS([ {id: 1, val: "foo"}, {id: 2, val: "bar"}, {id: 3, val: "moo"}, {

我在Safari中遇到了一个奇怪的问题,控制台中出现了这个错误- 警告:任何键控对象的使用都应该在作为子对象传递之前包装在React.addons.createFragment(对象)中

进一步看,我已经将问题隔离到不可变集合上的映射。下面是代码片段-

    var items = Immutable.fromJS([
      {id: 1, val: "foo"},
      {id: 2, val: "bar"},
      {id: 3, val: "moo"},
      {id: 4, val: "baz"}
    ]);

    var tree = items.map(function(item, i) {
      return <p key={i}>{item.get('val')}</p>
    });

    return (
        <div className="tree-view">
            {tree}
        </div>
    )
var items=Immutable.fromJS([
{id:1,val:“foo”},
{id:2,val:“bar”},
{id:3,val:“moo”},
{id:4,val:“baz”}
]);
var tree=items.map(函数(item,i){
返回

{item.get('val')}

}); 返回( {tree} )
呈现时,您可以看到正在以某种方式创建那些
元素,它们实际上是不可变列表对象的属性,即大小、容量、原点、级别等。这些span标记是错误的原因


知道为什么会这样吗?(我曾尝试在一个独立的JSbin中复制此问题,但不幸的是,我无法这样做)

我无法找到此问题的原因,但是,我只需在app.js文件中导入Immutable即可解决此问题(即使它不需要)


这是相关的提交-

我也有同样的问题。当我不调用
toJS()
但调用
require('immutable')
时,我会收到关于片段的警告,但不会收到额外跨距的警告;当我调用
toJS()
但不需要“immutable”时,我不会收到额外跨距和警告

在对React问题进行了一点挖掘之后,我发现了以下问题:

尽管它特别提到了iOS,但我在桌面Safari和移动Safari中也看到了同样的问题

解决方案是为Babel使用polyfill,这对我很有效

我必须在我的网页配置中添加polyfill作为条目,如下所示:

entry: ['babel/polyfill', './app/client.js']

现在在桌面和移动设备上对我有效。

可能是因为
tree
是一个不可变的列表,您可以在最后第三行将
{tree}
更改为
{tree.toJS()}
。这些随机数(大小/来源/容量/级别)显示在我的HTML中。在生产中,这些问题会消失(在browserify/babelify/uglify之后)。你知道发生了什么事吗?谢谢不!我在dev和prod中都看到了这个问题,所以我只添加了require语句,从而修复了Safari中的问题。