【问题标题】:How not to infinite loop using setState in render REACT NATIVE如何在渲染 REACT NATIVE 时不使用 setState 进行无限循环
【发布时间】:2019-02-16 06:53:08
【问题描述】:

我想删除列表视图中的一行,但是当我取回数据时它不会删除,因为缺少 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 });

【问题讨论】:

    标签: javascript react-native


    【解决方案1】:

    您不能从组件的render 方法中执行setState

    据我了解,您的目标是修改将在您的渲染方法中处理的状态的listViewData 属性。调用 setState 将触发render(),因此,正如您在代码示例中指出的,您希望在渲染方法中修改此属性,您可以直接对其进行赋值并在赋值下方对其进行处理,前提是该值在 @987654325 中有效仅限@:

    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
        // ...
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • componentwillreceiveprops(){ const { navigation } = this.props; const deleterow = navigation.getParam('deleterow', '500'); var newData = [...this.state.listViewData]; newData.splice(deleterow,1) alert(deleterow) //this.setState({ listViewData: newData }); }
      猜你喜欢
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 2018-01-20
      • 2020-10-22
      • 2017-07-20
      相关资源
      最近更新 更多