如何刷新组件以避免无限循环?

时间:2019-02-27 17:27:53

标签: reactjs react-native

我正在从sqlite数据库中读取数据,在同一组件上,用户可以在该DB的同一表中插入数据,因此我希望能够插入和显示刚插入的新元素,我的问题是如果我在组件上调用display函数将挂载,将不会显示新插入的数据,如果我从组件调用display函数将收到导致无限循环的道具,请您帮忙解决此问题  我正在使用redux,数据存储在props.categes中,操作是displayFunction()

这是我的代码

componentWillMount(){
    let cats = [];
        cats = this.props.categes
        let len = this.props.categes.length;
        this.setState({itemsLength : !this.state.itemsLength})
        I18n.locale = this.props.language
}

componentWillReceiveProps(nextProps) {

   if (nextProps.added) {

    this.props.displayFunction()
    cats = this.props.categes
    let len = this.props.categes.length;
     this.setState({itemsLength : true});

    }

}
componentDidMount(){
    this.setState({showInput : false, showInput2 : false}) 
} 

1 个答案:

答案 0 :(得分:0)

您正在通过在组件生命周期方法中添加setState()方法来创建无限循环。即使已卸载组件,仍会调用setState()方法。为防止这种情况,您可以参考此link

还必须选中states and lifecycle methods