[英]passing function as a prop to child component in React throws error
[英]React - passing a function to a child component does nothing
首先,我必须说,我已经查看了此站点上的所有“将功能传递给子组件”,但是找不到解决我问题的方法。 我有一个家长班:
import React from 'react';
import $ from 'jquery';
import Project from './Project';
import NewProjectModal from './NewProjectModal';
/**
* A projects menu
*/
class ProjectsMenu extends React.Component
{
constructor(props)
{
super(props);
var projects = [];
this.state = {_projects : projects};
this.handleClick = this.handleClick.bind(this);
}
handleClick(e) {
e.preventDefault();
console.log("Hello there");
}
render()
{
return (
<div className="column">
{/*problem here:*/}
<NewProjectModal onClick={this.handleClick.bind(this)} />
<a id="new-project" className="trigger" onClick={()=>this.showNewProjectModal()}>New project</a><br/>
{this.state._projects.map((item,index) =>
<div key={index}>{item}</div>
)}
</div>
);
}//render()
还有一个儿童班:
import React from 'react';
import $ from 'jquery';
/**
* A modal for the new project
*/
class NewProjectModal extends React.Component {
constructor(props) {
super(props);
console.log(this.props);
}
render() {
return (
<div id="new-project-modal">
<div>
<p>New Project</p>
<input type="text" name="project-name"/><br/>
<button onClick={()=> this.props.onClick}>Validate</button>
</div>
</div>
);
}//render()
我想通过道具将handleClick()函数传递给NewProjectModal Component。 但是,当我单击NewProjectModal中的按钮时,没有任何反应。 我想让它执行ProjetcsMenu组件中的handleClick()。
无需将onClick函数包装在子级的箭头函数中。 尝试在子组件中更改此部分,因为现在您实际上并没有在调用所需的函数:
<button onClick={this.props.onClick}>Validate</button>
另外,您还要在父组件中绑定两次click函数:在构造函数中以及将其传递给子组件时。 这些中的任何一个都应该足够。
首先,无需在此处再次绑定功能
<NewProjectModal onClick={this.handleClick.bind(this)} />
此外,出于性能方面的考虑,Gleb Kost的建议更好
无论如何,此{()=> this.props.onClick}
不正确,应为{()=> this.props.onClick()}
或仅仅是{this.props.onClick}
应该管用!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.