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

我可以使用参数的内联声明调用带有参数的事件处理程序,而不必在每个呈现上重新创建函数吗?

  •  1
  • user1283776  · 技术社区  · 6 年前

    据我所知,调用事件处理程序的以下方法是

    + 简洁易读

    - ,但引起了新的 myWrapperFunc

    我的理解正确吗?这种传递带有参数的事件处理程序的方式不会导致新的 handler 要在每个渲染上创建的实例?

    handler(event, val) {
        ...
    }
    
    <Component onClick={myWrapperFunc = (e) => handler(e, "myVal")}>
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   devserkan    6 年前

    <Component onClick={(e) => handler(e, "myVal")}>
    

    如果我们谈论主要的问题,我不是专家,但在这个问题上仍然没有达成一致。在每个渲染中都会创建回调函数,这会导致性能损失。但这种损失有多大?这可能取决于你的应用程序。

    它是一个大的应用程序,包括这么多的组件,创建这样的回调。所以,你应该考虑一个优化。有人说,如果你不需要优化,那就不用费心了:)有人说,遵循最佳实践。

    您可以将参数传递给函数,而不必像那样使用它们,但是您应该在组件中获得这些参数。如果它是道具,那么直接使用它,而不是像那样传递它。然后使用一个单独的函数及其引用。你不需要通过 e

    handler () => {
        use(event);
        use(props.val);
        use(val_variable_in_component;
    ...
    }
    
    ..
    <Component onClick={handler}>