親要素では、状態(画像のみ)を2つの子要素に渡そうとしています。子コンポーネントの1つが画像を表示するだけです。子要素に渡されたメテオの反応状態が更新されない
他の子コンポーネントには、画像の1つを変更するイベントハンドラがあります。 ここに私のコードはありますが、まだエラーは発生していません。イメージは変更されていません..ありがとう!
コードを減らすためのインポートは含まれていません!
親コンポーネント:
export default class Parent extends React.Component{
constructor(){
super();
this.state = {
img1: <img id="img1" className="img-responsive center-block" name="img1" src="img1.png"/>,
img2: <img id="img2" className="img-responsive center-block" name="img2" src="" />
};
}
render(){
return (
<div>
<displayBox layers={this.state}/>
<eventsBox layers={this.state}/>
</div>
)
}
}
これは、ディスプレイボックスコンポーネントである:ここで
export default class AvatarCreationBox extends React.Component{
render(){
return (
<div>
{this.props.layers.img1}
{this.props.layers.img2}
</div>
)
}
}
は、イベントハンドラと他の子要素である:
それは持っていますテストされ、最後にconsole.logで動作するこのイベントハンドラoそれ。
itemClicked(itemId,event){
event.stopPropagation();
if(itemId === "img3"){
this.props.layers.img1 = <img className="media-object" src="img3.png" alt="..."/>;
console.log("yo");
}
}
を追加することができません。代わりにメインクラスの関数を宣言してイメージを操作し、それを小道具として渡します。 – Nakib
私はこの関数を子に渡して呼び出されましたが、未定義のエラーが発生しています:renderView(){ this.state.img1 = ; }これはvia:renderView = {this.renderView}親のコンポーネントで – sophia
私の答えを確認してください – Nakib