【发布时间】:2020-06-20 00:44:49
【问题描述】:
我的SquareClicker 组件呈现一个SquareGrid,它又包含可点击的Squares:
class SquareClicker extends React.Component {
constructor(props) {
super(props);
this.state = {
grid: Array.from(Array(5).keys()).map(
i => Array.from(Array(5).keys()).map(
j => <Square key={((i*5)+j).toString()} onClick={this.handleClick}/>
)
)
}
this.handleClick = this.handleClick.bind(this);
}
handleClick(e) {
console.log("A square has been clicked.");
}
render() {
return (
<div className="square-clicker">
<SquareGrid grid={this.state.grid}/>
</div>
);
};
}
class Square extends React.Component {
render() {
return (
<div className={"square"} />
);
};
}
当我点击方块时,控制台没有记录任何内容。
这个question 是相似的——但是正如你所看到的,我已经将handleClick 函数绑定到了this.handleClick = this.handleClick.bind(this); 的组件上下文。
如何使我的方块可点击?
【问题讨论】:
-
你能提供你
Square类的代码吗? -
@Frosty619 当然,我已经更新了我的代码。
-
在组件状态中存储反应元素是一种反模式。
-
@trixn 谢谢。如何避免这种反模式?
-
@alex,您没有在
Square组件中附加 clickHandler!
标签: reactjs