反应会照顾事件侦听器并在状态更改时将其删除吗? 看下面的代码,我在onClick中使用了HtmlElement。状态更改时,可以删除元素本身。会清理事件监听器还是每次删除用户时都要自己清理每个监听器?
class Users extends React.Component {
constructor(props) {
super(props);
this.state = { data: this.props.data };
}
remove = (i) => {
this.state.data.splice(i,1);
this.setState({data: this.state.data});
};
render() {
const { data } = this.state;
return (
<div>
{data.map((user, i) => {
return <div key={i}>
<span>{user.name}</span>
<input type='button' value='remove' onClick={(e) => this.remove(i)} />
</div>
})}
</div>
);
}
}
答案 0 :(得分:0)
您无需担心清洁它。 React将为您解决这一问题。 React使用虚拟DOM,所以这是关键的区别。
不过,您可以通过从onClick
中删除箭头函数并绑定现有函数来优化代码。
更多信息和示例在这里:
https://reactjs.org/docs/faq-functions.html#bind-in-constructor-es2015
这是为什么箭头功能可能不是最佳选择的一些解释:
https://reactjs.org/docs/faq-functions.html#arrow-function-in-render