2016-01-06 79 views
0

我有一个问题,反应0.14.5阵营动态组件丢失ReactOwner

我得到这个有趣的错误信息

未捕获不变违规:addComponentAsRefTo(...):只有ReactOwner可以参。您可能正在向组件添加ref,该组件不是在组件的render方法中创建的,或者您有多个React加载副本(详细信息:https://fb.me/react-refs-must-have-owner)。

我的动态生成组件没有ReactOwner。

这里有一些代码

'use strict'; 

var React = require('React'); 
var SettingsUtil = require('scripts/utils/settingsUtil'); 
var ChangeAllocationsModalRow = require('./changeAllocationsModalRow.jsx'); 

var ChangeAllocationsModal = React.createClass({ 
    render: function() { 
    var branches = SettingsUtil.getOperatingBranches(); 

    var branchesArray = []; 
    _.each(branches, function(enabled, operatingBranch) { 
     branchesArray.push({ 
     operatingBranch: operatingBranch, 
     enabled: enabled 
     }); 
    }); 

    var printOperatingBranches = branchesArray.map(function(value) { 
     var refName = 'row-'.concat(value.operatingBranch); 
     return (
     <ChangeAllocationsModalRow data={value} ref={refName} key={refName} /> 
    ); 
    }); 

    return (
     <div className="modal fade" id="changeAllocationsModal" tabIndex="-1"> 
     <div className="modal-dialog modal-small text-left"> 
      <div className="modal-content"> 
       <div className="modal-body"> 
       <table> 
        <tbody> 
        {printOperatingBranches} 
        </tbody> 
       </table> 
       </div> 
      </div> 
     </div> 
     </div> 
    ); 
    } 
}); 

module.exports = ChangeAllocationsModal; 

如果我从ChangeAllocationsModalRow一切删除裁判 “作品”(没有错误)。 为什么?

编辑: 改变需要(“阵营”)要求(“反应”),现在我得到

警告:不能给予无国籍功能部件裁判(见参考文献“行粗粮”中由ChangeAllocationsModal创建)。试图访问这个参考将失败。

删除了React.createFactory,现在一切正常。

+0

在github上有同样的问题https://github.com/gcanti/tcomb-form/issues/107 - 你见过吗? –

+1

提示:尝试将var React = require('React')'改为'var React = require('react')'(小写第二个“R”),以确保您的系统只导入一次React。 –

+0

同时检查您正在使用的其他库是否正在导入不同版本的React。 (做一个'npm ls | grep -i react')。我用React-Bootstrap很多地遇到了这个问题。 – Brandon

回答

0

Michelle Tilley var React = require('React') to var React = require('react')修复了这个问题。