トップレベルコンポーネントのネストされた子要素に新しいプロパティを追加しようとしています。ここでネストされた子コンポーネントから反応中のマップ
私のより高いレベルのコンポーネントは
Photo.js
import React, {Component} from 'react';
import PropTypes from 'prop-types';
export default class Photo extends Component{
constructor(props){
super(props);
this.onHandleLoad = this.onHandleLoad.bind(this);
this.state = {
isLoaded:false
}
}
onHandleLoad(event){
this.setState({
isLoaded:true
})
}
render(){
const {children} = this.props;
return(
<div className="photo-container">
{children}
</div>
)
}
}
と呼ばれているが、私はそれに子を追加する方法です。
<Photo >
<Link to='/bla' className="slide-show-link">
<img src={photo.photo} alt={`${photo.title} photo`}/>
</Link>
</Photo>
必ずしも同じ子供が追加されているとは限りません。場合によっては入れ子のレベルがさらに高くなることもありますが、常にimgという要素があります。 すべてのネストされた要素をマップし、img要素を見つけてそれにカスタムの小道具を追加する方法が必要です。
追加したい小道具はonLoad = {this.onHandleLoad}ですので、正しいスコープで写真内のonHandleLoadを呼び出します。
私はReact.Children.mapを見てきましたが、最初の要素だけを返し、入れ子の要素は返しません。 imgは1レベルダウン以上になる可能性があります。 どうすればいいですか?再帰マッピングを検討していましたが、確かに行く方法はありません。これを処理するメソッドが組み込まれていますか?
これは大変ありがとうございます。うまくいけば、彼らは次のいくつかのリリースで文脈を取り除かないだろう。私はそれから離れていたが、あなたはその最も簡単な方法です。 –