【发布时间】:2020-04-14 23:52:30
【问题描述】:
我有一个 map() 函数,它循环存储在我的班级状态中的 json 数据。在每个循环中,它都会显示一个设置了 onClick 鼠标事件的组件。它不起作用并输出错误“错误:超出最大更新深度...”我该怎么做才能使其正常工作?
这是我使用的代码示例:
我的类的构造函数:
constructor(props) {
super(props);
this.state = {
storeList: storesLoc.stores,
currentStoreName: storesLoc.stores[0].name,
currentStoreCp: storesLoc.stores[0].cp,
currentStoreAddress: storesLoc.stores[0].address
}
以及渲染方法中的代码示例
<ul className="ul-locations">
{this.state.storeList.map((store, i) => (
<li>
<StoreItem
key={i}
cp={store.cp}
name={store.name}
selected={store.selected}
onClick={this.changeCityInfo(i)}/>
</li>
))}
<li>
<Shuffle className="col-2"></Shuffle>
<a href="#" className="ml-2 mr-2 col-10">Changer de Magasin</a></li>
【问题讨论】:
-
完整代码会有所帮助
-
您在渲染时调用了事件处理程序 -
onClick={this.changeCityInfo(i)}。将箭头函数onClick={() => this.changeCityInfo(i)}, or better yet pass the handler, andi`改为StoreItem,在里面处理。
标签: javascript reactjs