2015-11-04 49 views
0

我試圖使兩個組件的嵌套調用樹互相 和React.JS,如何使一個組件從它的孩子

我想作以下嵌套組件樹

<Option> 
    <OptionContents> 
    <Option> 
    <OptionContents> 
    ... 
    </OptionContents> 
    </Option> 
    </OptionContents> 
</Option> 

但我得到'選項'未定義,我知道這是因爲OptionContents之前加載選項導致未定義的錯誤。但是有沒有辦法達到這個目的?

+0

您是從自己的模塊導入'Option',還是將它定義在與上面打印的代碼相同的文件中?如果它在其單獨的模塊中,請確保您正在導出它。 – Alex

+0

是的,它在一個單獨的模塊中,我正在導出它。這項工作

+0

您是否在'OptionContents'模塊中導入'Option'?您需要導入您想要在每個模塊中使用的組件。導入的模塊不適用於兒童。 –

回答

1

我想我可能明白你正在努力去做。假設你有兩個組成部分:

var Option = React.createClass({ 
    render: function() { 
    return (<li>{this.props.children}</li>); 
    } 
}); 

var OptionContents = React.createClass({ 
    render: function() { 
    return (<div>{this.props.children}</div>); 
    } 
}); 

而且你想使用,並重新使用它們(嵌套等),你應該將它們導入到兩者將其中一個組件渲染它們。

// import Option 
// import OptionContents 
var App = React.createClass({ 
    render: function() { 
    return (
     <Option> 
     <OptionContents> 
     <Option> 
      <OptionContents> 
      ... 
      </OptionContents> 
     </Option> 
     </OptionContents> 
     </Option> 
    ); 
    } 
}); 

而不是將它們包含在彼此中作爲依賴關係並試圖呈現。

1

我看不出問題,如果您使用的是父組件,即:

import Option 
import OptionContents 

render() { 
    return (
     <Option> 
     <OptionContents> 
     <Option> 
      <OptionContents> 
      ... 
      </OptionContents> 
     </Option> 
     </OptionContents> 
     </Option> 
    ); 
} 

這樣就不必據我所知圓形衝突..

相關問題