javascript - Reactjs子组件在props中设置父级提供的状态数组时进入无限循环
问题描述
父元素从服务器获取数组并在道具中提供子元素以显示数组(票)。
父元素
render() {
return (
<div style={outerBoundary}>
<ShowArray tickets={this.state.tickets}/>
</div>
)
}
子元素
render() {
const { classes } = this.props;
var tablePadding = {
'padding':'1em',
}
this.setState({
tickets:this.props.tickets,
});
return (
<div>
<Paper className={classes.root} style={tablePadding}>
<Typography variant="title" id="tableTitle">
Array Elements
</Typography>
{this.state.tickets && this.state.tickets.length > 0 && this.state.tickets.map((n, index) => {
console.log(n, index)
return (
<TableRow> n.id </TableRow>
);
})}
)
}
我面临的问题是我使用道具值在子元素中设置的票证状态进入无限循环。
this.setState({
tickets:this.props.tickets,
});
解决方案
你不能setState
在你的render
函数内部调用
this.setState({
tickets:this.props.tickets,
});
由于该setState
函数导致重新渲染,因此在下一次渲染时您将setState
再次调用并且您将需要再次重新渲染,这就是您拥有循环的原因
推荐阅读
- javascript - 您如何将光标聚焦在位于 Bootstrap 模式中的 Quill 编辑器中?
- sql - 透视 SQL Server 表
- javascript - 如何使用 If () javascript 检查类是否被点击
- java - Android Studio com.google.wireless.android.sdk.stats.IntellijIndexingStats
- azure - Azure devops 构建推送映像到 aks
- wordpress - 如何检查文件是否真的存在于 WordPress 中?
- php - 未定义的变量:注释 - Laravel 5.8
- python - 如何使字典提供所有给定的输入,而不仅仅是最后更新的输入?
- python - Python3 打印“ENC[PKCS7”和“]”之间的所有内容
- php - 图像未存储在 Laravel 的文件夹中