如何在渲染中不使用setState进行无限循环

时间:2019-02-16 06:53:08

标签: javascript react-native

我想在列表视图中删除一行,但是当我取回数据时,它不会删除,因为setstate丢失了

 render() {
    const { navigation } = this.props;
    const deleterow = navigation.getParam('deleterow', '500');
    var newData = [...this.state.listViewData];
    newData.splice(deleterow,1)
    //this.setState({ listViewData: newData });

2 个答案:

答案 0 :(得分:0)

您可以尝试componentwillreceiveprops添加一个条件,然后执行setState。 您不想在render方法中添加setState。

答案 1 :(得分:0)

不允许使用组件的setState方法执行render

据我了解,您的目的是修改将在您的render方法中处理的状态的listViewData属性。调用setState将触发一个render(),因此,如您在代码示例中所指出的,您希望在render方法中修改此属性,可以直接分配它并在分配之下对其进行处理,只要该值在仅render

render(){
    const { navigation } = this.props;
    const deleterow = navigation.getParam('deleterow', '500');
    var newData = [...this.state.listViewData];
    newData.splice(deleterow,1)
    this.state.listViewData = newData;
    // use this.state.listViewData to populate the items of your view
    // ...