私は反応成分の巣を持っています(それはモーダルです)。親から祖父母からの小道具を経由して機能を継承する方法
<Modal> // Grandparent
<Footer> // Parent
<Button label="Click Me" clickAction={
() => {
/* So what goes here? */
}
}/> //Child
</Footer>
</Modal>
モーダルはすべての子に近似モーダル関数を渡します。この関数は、フッターのすべての子に再び渡されます。
export default class Footer extends React.Component {
constructor(props) {
super(props);
this.handleClose = this.handleClose.bind(this);
}
handleClose() {
this.props.closeModal();
}
render() {
const childrenWithProps = React.Children.map(this.props.children,
(child) => React.cloneElement(child, {
closeModal: this.handleClose
})
);
return (
<footer}>
{childrenWithProps}
</footer>
);
}
}
このようなボタンクラスの外観の内部:
constructor(props) {
super(props);
this.click = this.click.bind(this);
}
click() {
this.props.clickAction();
}
render() {
return <a
href='#'
onClick={this.click}
>
{this.props.label}
</a>
}
唯一のそれへのアクセス権を持つことになっていますので、私は何をしたくないことは右のボタンに近い方法を焼くれますそれはモーダルのフッターの子です。
私が解決しようとしていること(最初のコードブロックを参照してください)は/ *に入るものです。 */ エリア。 'this'を使用すると 'undefined'が返されるので、closeModalメソッドに手が届かない。
提案がありますか?
問題は何ですか?すでに解決策を見つけたようです。 – djfdev
私が書いた最初のブロックを見てください/ *だからここに行くの? * /。それが私が解決しようとしていることです。 –