Reactで親コンポーネントのstateを変更/参照する
Page content
概要
Reactで(こういうことをするべきかどうかは置いておいて)他のコンポーネントのstateを変更する方法。
親のstateを参照する
普通にstateをpropとして子コンポーネントに渡せばよい。
親側はこんな感じ。
class Parent extends React.component {
state = {
mystate: "hoge"
}
render() {
return {
<Clild parent_state={this.state}>
}
}
}
子側はこんな感じ。
class Child extends React.component {
render() {
const { main_state } = this.props;
return {
<Typography>
{main_state.mystate}
</Typography>
}
}
}
Child.propTypes = {
main_state: PropTypes.object
};
親のstateを変更する
親コンポーネント側でstateを変更する関数を用意し、子コンポーネントに渡す。
親側はこんな感じ。
class Parent extends React.component {
state = {
mystate: ""
}
handleStateChange = (str) => {
this.setState({ mystate: str })
};
render() {
return {
<Clild parent_func={this.handleStateChange}>
}
}
}
子側はこんな感じ。
class Child extends React.component {
handleClick = (str) => event => {
return this.props.parent_func(str);
};
render() {
var str1 = "fuga";
var str2 = "piyo";
return {
<div>
<Button onClick={this.handleClick(str1)}>
{str1}
</Button>
<Button onClick={this.handleClick(str2)}>
{str2}
</Button>
</div>
}
}
}
Child.propTypes = {
parent_func: PropTypes.func
};