美文网首页
关于SetState使用注意事项添加mounted判断

关于SetState使用注意事项添加mounted判断

作者: 禄子_c79b | 来源:发表于2023-08-22 11:40 被阅读0次
  • 在 Flutter 中,if (mounted) 是一种常用的用法,用于在某些异步操作或回调中检查当前组件是否仍然存在于界面上(即是否已经被挂载)。

  • Flutter 组件在销毁之后,仍然可能会有一些异步操作或回调在执行,此时访问已销毁的组件可能会引发异常。为了避免这种情况,通常在异步操作或回调的代码中,使用 if (mounted) 条件来检查组件是否仍然挂载在界面上。

  • 示例:

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  bool isLoading = false;

  void fetchData() {
    setState(() {
      isLoading = true;
    });

    // 模拟异步操作
    Future.delayed(Duration(seconds: 2), () {
      // 检查组件是否仍然挂载
      if (mounted) {
        setState(() {
          isLoading = false;
        });
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        if (isLoading)
          CircularProgressIndicator(),
        ElevatedButton(
          onPressed: fetchData,
          child: Text('Fetch Data'),
        ),
      ],
    );
  }
}

  • 在上面的示例中,我们在异步操作中使用 if (mounted) 条件来检查组件是否仍然挂载,以避免在组件已销毁后执行 setState 导致异常。

  • 这个模式在处理异步操作或回调时非常有用,可以确保在组件已销毁后不会触发不必要的更新或操作。

相关文章

  • 详解Flutter的setState更新原理和流程

    调用 setState()必须是没有调用过 dispose()方法,不然出错,可通过mounted属性来判断调用此...

  • React error warning 合计(长期更新)

    1、 Warning: setState(...): Can only update a mounted or m...

  • vue初学记事本

    1、vue使用swiper注意事项 初始化使用mounted,不可以使用created,否则无法渲染 vue in...

  • vue兼容IE11

    1.vue-router在App.vue里面的mounted周期添加判断 2.vuexhttps://babelj...

  • vue 容易忽略的点

    关于this.$refs获取dom节点在mounted中使用this.$refs需要注意,虽然mounted表示d...

  • React Hooks 详解

    useState 使用状态 注意事项1: 不可局部更新 如果state是一个对象,能否部分setState?答案是...

  • vue3中的Transition的基本使用及注意事项

    注意事项: 不能在当前的标签上添加条件判断,可在下一级的标签上添加 基本使用 动画的样式,默认是v-enter-f...

  • RN 优化之一

    大组件使用setState ,分离成很小的模块。各用各的setState 把setState 的范围使用到最少。

  • react易踩坑

    ref使用中的坑 小结:setState是异步函数所以关于dom的操作需要在setState的回调中比如现在我们要...

  • react state初始化问题

    报错信息 大致: 不能再一个组件尚未mounted时调用 setState() 方法,这是一个空操作,但是可能会导...

网友评论

      本文标题:关于SetState使用注意事项添加mounted判断

      本文链接:https://www.haomeiwen.com/subject/xrhumdtx.html