私はReactsを新しくしました。私は多くの投稿を読んで、私は私の問題の解決策を見つけることができません。React - 子供の状態を設定しますか?
私はいくつかのコンポーネントを持っています。 1つはAjaxリクエストが呼び出されて値を取得するギャラリーです。もう1つのコンポーネントはInnerContentです。そのギャラリーの子コンポーネントです。
私の質問(InnerContent)では、子コンポーネントで州を小道具として設定するのが正しいですか?
これは私の入力データである:ここで
[
{
"collection": 1,
"article": 1,
"name": "Gallery 2",
"images": [{
"id": 2,
"name": "aaa",
"src": "http://via.placeholder.com/200x200"
},
{
"id": 3,
"name": "bbb",
"src": "http://via.placeholder.com/200x200"
}
]
}
]
は私のコードです:
class InnerContent extends Component {
constructor(props){
super(props);
this.state = {
images: this.props.data.images,
};
}
removeImage() {
/*change state in this Component*/
}
render() {
return (
<div>
<div>Gallery name: {this.props.data.name}</div>
<GalleryImageContent>
<SortableItem removeImage={this.removeImage} {...this.state} />
</GalleryImageContent>
</div>
);
}
}
function Content(props) {
let rows = [];
props.data.forEach((data) => {
rows.push(<InnerContent data={data}/>)
});
return (
<div>
{rows}
</div>
);
}
class Foo extends Component {
constructor(props){
super(props);
this.state = {
data: Service.data
};
}
render() {
return(
<div>
<button onClick={/*change state*/}>Add Gallery</button>
<Content data={this.state.data}/>
</div>
);
}
}
あなたの質問は何ですか?はい、あなたの子コンポーネントの状態に小道具を割り当てることができます – Jeffin
あなたがあなたのコードを掘り起こさなければならないのではなく、問題の簡略化されたバージョンを作成したなら、助けになります。親コンポーネントの状態を変更しようとしていると仮定します。もしそうなら、 'updateField =(newVal)=> this.setState({field:newVal});'という状態を変更する関数を作成し、この関数を小道具を介して子コンポーネントに渡し、 'this .props.updateField(val); ' – fungusanthrax