【发布时间】:2018-07-06 17:58:12
【问题描述】:
我是 React 新手,有人告诉我,在将方法传递给 onClick 处理程序时,您不应该:
- 使用内联箭头函数
- 调用.bind(this, parameter)
因为它们都会在每次渲染上创建一个新函数,这会产生影响或性能
在我的代码中,我有一个父组件将一个方法 (asideSelected()) 作为道具发送给子组件。在子组件中,我想使用父组件接收的参数调用此方法。我创建了以下解决方案:
家长:
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
selected: ""
};
this.asideSelected = this.asideSelected.bind(this);
}
asideSelected(selected) {
this.setState({
selected: selected
});
}
render() {
return (
<Aside
selected={this.asideSelected}
/>
);
}
孩子:
export default class Aside extends Component {
constructor(props) {
super(props);
this.selected = this.props.selected.bind(this);
this.showSelected = this.showSelected.bind(this);
}
showSelected(e) {
let selected = e.target.className;
this.selected(selected);
}
<div className="profile" onClick={this.showSelected} src={chat}></div>
}
这个解决方案似乎有效,但是,在 onClick 内部使用内联箭头函数和绑定也是如此,我从未见过“糟糕”的重新渲染,所以我不知道这是否真的与其他方法。如果不清楚我要做什么,我将使用事件目标作为参数传递,而不是直接在 onClick 内部进行。我担心这是一个笨重或低于标准的解决方案。
欢迎任何输入, 谢谢
【问题讨论】:
-
就是这样,谢谢。
标签: javascript reactjs function onclick render