我想添加一個新的屬性到頂級組件中的嵌套子元素。通過嵌套的兒童組件映射在反應
我更高級別的組件被稱爲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元素並添加自定義道具的方法。
我想添加的道具是onLoad = {this.onHandleLoad),所以它會調用Photo中的onHandleLoad和正確的範圍。
我看了React.Children.map,但只返回第一個元素而不是嵌套元素。 img可能會降低1級或更多。 我該怎麼做。正在研究遞歸映射,但並不確定這是怎麼回事。有沒有內置的方法來處理這個?
哦,這是非常感謝。希望他們不會在接下來的幾個版本中刪除上下文。我遠離它,但你是對的最簡單的方法。 –