javascript - 在 React 中调用从父组件到子组件的方法传递
问题描述
我有一个父有状态反应组件,该组件具有在子组件中单击 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 中传递文本...
解决方案
您必须将函数实际传递给子组件
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} updateDate={this.updateDateAndWorkouts} />
<ClassList workouts={this.state.selectedWorkouts} updateDate={this.updateDateAndWorkouts}/>
</div>
)
}
推荐阅读
- python - 如何在python中重新启动其他程序?
- laravel - Laravel 与 Laravel 护照身份验证相呼应
- javascript - 返回数据数组而不是字典 - Sequelize
- symfony4 - Symfony - 独白特定的处理程序
- typescript - 任何类型都可以在 Typescript 中转换为数字映射
- docker - Go Docker 容器失败:“退出代码 1”
- php - 如何在sql中将两列连接成一个新列?
- curl - 当使用 cURL 将信息粘贴到网站上的文本字段并“按”回车时,我如何验证它实际通过了?
- excel - 循环遍历文件夹中的每个 Excel 文件,到同一个工作表以复制相同的范围
- python - Flask - 防止多个打开的mysql连接?