代码之家  ›  专栏  ›  技术社区  ›  atreeon

在什么情况下使用函数在Statelss类上定义小部件组合是合理的?[复制]

  •  0
  • atreeon  · 技术社区  · 8 年前

    https://github.com/flutter/flutter/issues/19269

    讨论应该在函数组件上使用无状态类定义来定义小部件组合的原因。

    Widget functionWidgetComposition() => Text('hello');
    
    class MyWidgetComposition extends StatelessWidget {
      Widget build(BuildContext context) => Text('hello');
    }
    

    如果我理解正确的话,使用无状态的原因如下。。。

    1. 我在乎它不会通过热重装来重建吗?(或者我会记得)
    2. 我是否需要将我的小部件与密钥关联?
    3. 这个小部件需要重建吗?

    总是将无状态作为一个相当标准的规则使用,感觉非常有说服力,但是函数式风格要简洁得多,尤其是当您有几个参数时。我觉得功能组件可以提高代码的可读性。那么我应该一直使用无状态类,还是在某些情况下使用React-call功能组件?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Günter Zöchbauer    7 年前

    从 https://github.com/flutter/flutter/issues/19269#issuecomment-404667287

    主要的区别在于它如何链接到元素树(在 那个函数不能得到对元素本身的引用,也不会

    其他一些例子:

    • 如果小部件依赖于子树 将重新构建赋予函数BuildContext的小部件。
      • 在热重新加载期间,不会调用函数本身来重建。某人 否则就得把它带来。如果你刚把一个函数传递给 热重新加载。

    有关详细讨论,请参见 https://github.com/flutter/flutter/issues/19269