2016-01-06 78 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')修復了這個問題。