2017-07-28 29 views
1

私はReactを初めて使うので、私が望むものが可能かどうかわかりません。生成された子コンポーネントから親メソッドへのアクセスに反応します

は、次の点を考慮コンポーネントに反応:私はタグをHTMLといくつかのケースでコンポーネントを反応させるために、BBコードを含む文字列をレンダリングするライブラリを使用しています

export default class BBCode extends Component { 
    render() { 
    return (
     <div> 
     {parser.toReact(this.props.content.content)} 
     </div> 
    ) 
    } 
} 

。これは機能{parser.toReact}によって行われています。

このコンポーネントのメソッドには、parser.toReact関数で生成されたコンポーネントを通じてアクセスしたいと考えています。

この関数に小道具を渡し、生成されたコンポーネントに適用される方法はありますか?

+0

は 'parse.toReact'は、文字列の配列を返すこと、および/またはコンポーネントを反応させていますか? – nem035

答えて

1

React.cloneElementで子供に余分な小道具を付けることができます。文字列の配列parse.toReactリターンを仮定や要素を反応して、あなたはそれぞれの要素のクローンを作成し、追加の小道具として、あなたのコールバックを追加することができます。

export default class BBCode extends Component { 
    render() { 
    // every React element will receive `myCustomCallback` as a prop 
    const elements = parser 
     .toReact(this.props.content.content) 
     .map(elem => React.isValidElement(elem) 
     ? React.cloneElement(elem, { 
      myCustomCallback: this.myCustomCallback 
      }) 
     : elem 
    ); 

    return (
     <div> 
     {elements} 
     </div> 
    ) 
    } 
} 
+0

非常に興味深いアプローチで、これは決して考えられませんでした。今すぐ試してみよう! – Squrler

+0

これは素晴らしいですし、私が必要とするものに最適です。 React.cloneElementにはパフォーマンス上のペナルティがありますか? – Squrler

+0

仲間を助けることがうれしいです。あなたの質問まで:https://stackoverflow.com/questions/35616029/react-createelement-vs-cloneelement – nem035

関連する問題