【发布时间】:2019-08-23 20:08:15
【问题描述】:
我有一个父状态反应组件,该组件具有一个功能,当在子组件中单击 html 跨度时,该功能将发生变化。我想将该方法传递给子组件并在单击快照时调用它然后我想将它传递回父组件并根据传递回来的内容更新状态。我在传递该方法并在子组件中调用它时遇到问题...
父组件:
export default class App extends Component {
constructor(props) {
super(props)
this.state = {
dates: [],
workouts: [],
selectedDate: '',
selectedWorkouts: []
}
this.updateDateAndWorkouts = this.updateDateAndWorkouts.bind(this)
axios.defaults.baseURL = "http://localhost:3001"
}
updateDateAndWorkouts = () => {
console.log('clicked')
}
render() {
return (
<div>
<DateBar data={this.state.dates}/>
<ClassList workouts={this.state.selectedWorkouts} updateDate={this.updateDateAndWorkouts}/>
</div>
)
}
这是子组件:
export default function Datebar(props) {
return (
<div>
{props.data.map((day, index) => {
return (
<div key={index}>
<span onClick={props.updateDate}>
{day}
</span>
</div>
)
})}
</div>
)
}
我想要发生的是当在子组件中调用该方法时,它会调用已传递的方法并在跨度 div 内传递文本...
【问题讨论】:
-
你没有在这里传递任何函数:
<DateBar data={this.state.dates}/> -
具体是什么不起作用?您没有将函数传递给
Datebar,而是将一个函数传递给ClassList。此外,您不需要手动bind箭头函数——这是箭头函数的要点之一。 -
<DateBar data={this.state.dates} updateDate={this.updateDateAndWorkouts}/>
标签: javascript reactjs