2016-08-31 9 views
1

親コンポーネントがあると仮定すると、それは多くのタイプの子を持つ可能性があります。例えば未知の子供と親の間の反応 - コミュニケーション

class App extends React.Component<{}, {}> { 
    render() { 
     return (
      <div> 
       <parent> 
        <child-1/> 
       </parent> 
       <parent> 
        <child-2/> 
       </parent> 
      </div> 
     ); 
    } 
}; 
ReactDOM.render(<App />, document.getElementById('root')); 

親のみに従ってレンダリングされるべきイベント、 をドラッグするが、その後、そのX、Y、幅、高さは、その特定の子寸法に従ってレンダリングされるべきです。

この情報を子供から取得する方法はありますか? または子供への参照を取得するには?

ありがとうございました!

答えて

0

私は右、あなたを理解していれば、あなたはイベントが発生したとき、彼らは親を更新れると子どもたちに更新機能を渡すことができます。

class App extends React.Component<{}, {}> { 
    childs = []; 

    render() { 
     return (
      <div> 
       <parent> 
        <child-1 ref={ (c) => this.childs.push(c) } /> 
       </parent> 
       <parent> 
        <child-2 ref={ (c) => this.childs.push(c) } /> 
       </parent> 
      </div> 
     ); 
    } 
}; 

class Parent extends React.Component<{}, {}> { 
    render() { 
     return ( 
      <div className="parent"> 
       <Child updatePosition={ this.onChildPositionUpdated.bind(this) } /> 
      </div> 
     ); 
    } 

    onChildPositionUpdated(x: number, y: number, width: number, height: number) { 
     // calculate things 
    } 
} 

interface ChildProps { 
    updatePosition(x: number, y: number, width: number, height: number); 
} 

class Child extends React.Component<ChildProps, {}> { 
    onDrag(...) { 
     // get dimensions 
     this.props.updatePosition(...); 
    } 

    render() { 
     return // ... 
    } 
} 

class App extends React.Component<{}, {}> { 
    render() { 
     return (
      <div> 
       <Parent /> 
      </div> 
     ); 
    } 
}; 

別のオプションはRefs to Componentsを使用することです

今、あなたが必要とすることができる配列の子どもたちと一緒に。

+0

あなたの子供を知らない場合、あなたはまだあなたの子供に小道具を渡すことができます。あなたの提案を https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement – Inoir

+0

感謝!最初の提案では、私が探しているものではない、親の内部に構造体を宣言する必要があります。 2番目の提案に関して、この子配列を介して親が子参照をどのように得ることができるでしょうか?ありがとう! – user2487087

+0

あなたのシナリオはどういうものなのかはあなたの質問からは分かりませんので、特定の答えを私に与えるのは難しいです。私の提案は、コンポーネント間のコミュニケーションをどのようにして行うことができ、特定の問題に対するソリューションを調整することができるかを示しています。例えば、 'refs'アプローチを使うことができますが、' App'の代わりに 'Parent'にそれを置くことができます。質問を編集して正確な問題を説明すると、より具体的なものを教えていただけます –

関連する問題