在React-Native中调用父回调时,“超出最大更新深度...”

时间:2019-06-21 02:22:40

标签: react-native

对于这种情况,我仍然不明白为什么我超出了更新深度,如果能提供帮助,我将不胜感激。

提供一些见识。

我创建了一个父级和子级(多列表选择器)组件。 这个多列表允许您选择多个项目,当模式关闭时,我执行来自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)时,它都会不断抛出此错误。

0 个答案:

没有答案