如何将 React prop 从 Parent 传递到 Child,再传递到另一个 Child?
How do I pass a React prop from Parent to Child, to another Child?
我目前的 Parent 设置如下,然后将道具传递给
class WorkoutPlan extends React.Component {
constructor() {
super();
this.state = {
workoutPlan: {}
};
}
componentDidMount() {
axios
.get("/api/workout-plan")
.then(response => {
this.setState({ workoutPlan: response.data });
})
.catch(error => {
console.log(error);
});
}
render() {
const { workoutPlan } = this.state;
// const workoutPlan = this.state.workoutPlan;
return (
<div>
<h1>{workoutPlan.Name}</h1>
<button className="button" onClick={this.handleClick}>
Click Me
</button>
<Workout {...workoutPlan.workout} />
</div>
);
}
}
然后在我的 child 中,我想将这些相同的道具传递给另一个 Child
import React from "react";
import Exercise from "./Exercise";
const Workout = props => {
return (
<div>
<h2>"Workout for {props.day}"</h2>
<Exercise {...workoutPlan.workout} />
</div>
);
};
export default Workout;
我似乎无法弄清楚我将如何去做这件事。我被告知设置与第一个 child 完全相同,但是当我输入相同的代码时,它不起作用。
您可以将 {...props}
传递给您的 Exercise
组件,这样您的锻炼组件应该如下所示
import React from "react";
import Exercise from "./Exercise";
const Workout = props => {
return (
<div>
<h2>"Workout for {props.day}"</h2>
<Exercise {...props} />
</div>
);
};
export default Workout;
传递 props 时解构它,效果和你一个一个传递 props 是一样的。
您无法实现目标,因为在您的锻炼组件中没有 "workout" 道具。
尝试像这样将 props 传递给 Exercise 组件:
<Exercise {...props} />
我目前的 Parent 设置如下,然后将道具传递给
class WorkoutPlan extends React.Component {
constructor() {
super();
this.state = {
workoutPlan: {}
};
}
componentDidMount() {
axios
.get("/api/workout-plan")
.then(response => {
this.setState({ workoutPlan: response.data });
})
.catch(error => {
console.log(error);
});
}
render() {
const { workoutPlan } = this.state;
// const workoutPlan = this.state.workoutPlan;
return (
<div>
<h1>{workoutPlan.Name}</h1>
<button className="button" onClick={this.handleClick}>
Click Me
</button>
<Workout {...workoutPlan.workout} />
</div>
);
}
}
然后在我的 child 中,我想将这些相同的道具传递给另一个 Child
import React from "react";
import Exercise from "./Exercise";
const Workout = props => {
return (
<div>
<h2>"Workout for {props.day}"</h2>
<Exercise {...workoutPlan.workout} />
</div>
);
};
export default Workout;
我似乎无法弄清楚我将如何去做这件事。我被告知设置与第一个 child 完全相同,但是当我输入相同的代码时,它不起作用。
您可以将 {...props}
传递给您的 Exercise
组件,这样您的锻炼组件应该如下所示
import React from "react";
import Exercise from "./Exercise";
const Workout = props => {
return (
<div>
<h2>"Workout for {props.day}"</h2>
<Exercise {...props} />
</div>
);
};
export default Workout;
传递 props 时解构它,效果和你一个一个传递 props 是一样的。
您无法实现目标,因为在您的锻炼组件中没有 "workout" 道具。
尝试像这样将 props 传递给 Exercise 组件:
<Exercise {...props} />