[英]Pass prop from child to parent React
In WeatherForecast
component I need to pass the returned value of function appColor
into a property. 在
WeatherForecast
组件中,我需要将函数appColor
的返回值传递给属性。 Then the property from WeatherForecast
needs to be passed into className
of app
component. 然后需要将
WeatherForecast
的属性传递到app
组件的className
中。 New to react. 新的反应。 Not sure how to pass property from child to component.
不确定如何将属性从子节点传递给组件。
class WeatherForecast extends Component {
appColor(weatherData) {
//Check for condition and return value
return "example-color1"
}
render() {
/************************************
// Need to Pass returned value of Function into propery or variable?
/************************************/
let bgColor = appColor(weatherData);
return (
<div className="text-center col-xs-12">
<h1 id="temp">{this.displayTemp(this.props.weather)}</h1>
<h1>{this.displayCity(this.props.weather)}</h1>
</div>
);
}
}
export default class App extends Component {
render() {
return (
<div className={"app-container" + this.AppColorPropertyClass}>
<div className="main-wrapper">
<WeatherForecast bgColorPropertyClass={this.AppColorPropertyClass} />
</div>
</div>
);
}
}
You can pass a function from the parent to the child, and the child can call that function with the color (pretty much operates like an event handler). 您可以将一个函数从父级传递给子级,子级可以使用该颜色调用该函数(几乎像事件处理程序一样运行)。 When the color is received back in App, assign it to a state value using .setState() which will then get picked up in render()
当在App中收到颜色时,使用.setState()将其指定为状态值,然后在render()中将其拾取
export default class App extends Component {
constructor(props) {
super(props);
this.state = { appColorClass: 'some-default-color' };
}
setAppColor(colorClass) {
this.setState({ appColorClass: colorClass });
}
render() {
return (
<div className={"app-container" + this.state.appColorClass}>
<div className="main-wrapper">
<WeatherForecast getBgColorPropertyClass={ color => this.setAppColor(color) } />
</div>
</div>
);
}
}
class WeatherForecast extends Component {
componentWillMount() {
if (this.props.getBgColorPropertyClass) {
// TODO: Get "weatherData" from somewhere (maybe from this.props.weather ??)
this.props.getBgColorPropertyClass(this.appColor(weatherData));
}
}
appColor(weatherData) {
//Check for condition and return value
return "example-color1"
}
render() {
return (
<div className="text-center col-xs-12">
<h1 id="temp">{this.displayTemp(this.props.weather)}</h1>
<h1>{this.displayCity(this.props.weather)}</h1>
</div>
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.