对于这种情况,我仍然不明白为什么我超出了更新深度,如果能提供帮助,我将不胜感激。
提供一些见识。
我创建了一个父级和子级(多列表选择器)组件。 这个多列表允许您选择多个项目,当模式关闭时,我执行来自Parent的回调,并选择项目列表,并通过setState从Parent本身对其进行更新。
在Parent的构造函数上,我得到了这样的回调函数:
父母
this.onItemSelected = this.onItemSelected.bind(this);
这是上面的功能
onItemSelected(updatedList) {
this.setState({selectedItemList: updatedList});
}
这是我使用它并将其传递给儿童的时间。
renderModalMultiSelect = () => {
return (
<MultiSelect
items={this.state.itemList}
onItemSelect={ this.onItemSelected }
disabled={this.state.filters.type === 'all'}
isLoadingList={this.state.isLoadingList}
/>
)
}
当然,这是在{ this.renderModalMultiSelect() }
的Parent的render()函数上
孩子
在此组件上,我在本地处理选定的项目列表,不在State上,因此,每当按下项目时,我只需在此本地数组上执行一次操作即可。 当我关闭模式时,我将运行父props回调。
onClose = () => {
this.setState({ modalOpened: false }, () => {
// Optional callback
if (this.props.onItemSelect) {
this.props.onItemSelect(this.selectedItems);
}
})
}
同样,此功能用于儿童的render()
<Button onPress={ this.onClose } transparent>
<Icon name="md-arrow-back" style={ styles.headerIcon }/>
</Button>
在此之前,我将状态从“父项”传递给“子项”,并列出了所选择的项目,但这样做似乎不正确:this.props.selectedItemList.push(item)
还是这样做呢?
谢谢,我希望我能理解这里发生的事情,每当我关闭模式(调用onClose)时,它都会不断抛出此错误。