我们应该记住关闭吗?

用户名

我与functional_widget一起使用该软件包flutter_hooks我需要为事件处理程序创建闭包,我想知道什么是正确的方法:

@hwidget
Widget foo1() {
  final state = useState(0);
  final onPressed = () {
    state.value++;
  };
  return RaisedButton(onPressed: onPressed);
}

@hwidget
Widget foo2() {
  final state = useState(0);
  final onPressed = useMemoized(() => () {
        state.value++;
      });
  return RaisedButton(onPressed: onPressed);
}

我是在节省成本还是通过使用使情况变得更糟useMemomized有没有更好的办法?

雷米·罗素(Remi Rousselet)

您可以,但这不是必需的。

另一方面,如果这样做,正确指定密钥至关重要:

final state = useState(0);
final cb = useMemoized(() => () {
  state.value++;
}, [state]);

否则,可能导致您的闭包指向先前的参数,而不是新的参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章