如题,已知目前React
是采用合成事件去完成“代理”我们的所有事件,那么既然React
已经将所有的事件“挂”在了根节点容器上,我们还有没有必要循环列表的逻辑中写事件代理?例如如下伪代码:
// planA
<div>
[很长的列表].map(item => {
return <li key={item.id} onClick={() => {
// 点击事件的业务逻辑
}}>{item.name}</li>
})
</div>
// planB
<div onClick={(e) => {
// 代理列表的点击事件
}}>
[很长的列表].map(item => {
return <li key={item.id}>{item.name}</li>
})
</div>
以上planB有没有必要?
React 中,合成事件是通过事件冒泡机制来实现事件代理的。在默认情况下,React 将所有的事件都绑定在根节点容器上,然后通过事件冒泡来触发对应的回调函数。因此,如果你使用的是类似 planA 的代码,那么不需要显式地对列表中的每个元素进行事件代理,React 已经自动帮你完成了事件代理的工作。
而对于类似 planB 的代码,虽然也可以完成事件代理的工作,但是并不推荐这样做。因为这种做法会将所有的事件绑定在根节点容器上,这可能会影响性能。而且,如果你在根节点容器上绑定了多个事件处理函数,那么这些处理函数的执行顺序可能是不确定的,这可能会导致一些意想不到的问题。
如果你使用 React,推荐使用类似 planA 的代码,直接在列表元素上绑定事件处理函数即可。React 会自动完成事件代理的工作,你不需要显式地进行事件代理。如果你需要对列表元素进行事件代理,也可以使用列表元素的父元素来进行事件代理,这样会更加高效和可靠
问题内容: 我最近有一个关于如何在另一个类的主方法中打开登录面板的问题。因为我还没有在Swing中上过任何课(仅是基本的Java编程),所以我已经偶然发现了另一个问题。 我如何检测用户是否按下了JPanel中的按钮并使它执行某项操作。 例如:用户按下了登录-> if(textfield1.getText()==“ user”){打开另一个JFrame}->等等。 这是我的主要代码: 这是Login
我们需要将JMS队列中的消息持久化到事务中的数据库中,以确保在DB持久化期间抛出任何错误时不会确认JMS消息。基于此处提供的解决方案——使用消息驱动通道适配器时的事务处理 请确认理解是否正确。此外,还有以下问题 在这种情况下是否需要TransactionAware ConnectionFactoryProxy JMS Queue和JDBC是两个独立的事务资源。如本例所示,将jdbc事务管理器注入J
问题内容: 为什么编译器没有在开关中的每个代码块之后自动放置break语句?是出于历史原因吗?您何时要执行多个代码块? 问题答案: 有时将多个案例与同一代码块关联会很有帮助,例如 等。只是一个例子。 以我的经验,通常“摔倒”并在一种情况下执行多个代码块是不好的风格,但是在某些情况下可能会有用处。
根据我的理解,当数据库事务跨越微服务时,我们可以通过使用message-broker(kafka、RabbitMQ等)通过发布事件来解决这个问题,这样订阅者微服务就可以通过监听这些事件来更新他们的数据库。 在异常情况下,我们可以发送故障事件,以便订阅服务器服务更新它们的状态。 我们真的需要事件来源吗?
主要内容:实例,向事件处理程序传递参数React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同: React 事件绑定属性的命名采用驼峰式写法,而不是小写。 如果采用 JSX 的语法你需要传入一个函数作为事件处理函数,而不是一个字符串(DOM 元素的写法) HTML 通常写法是: React 中写法为: 在 React 中另一个不同是你不能使用返回 false 的方式阻止默认行为, 你必须明确使用 preventDefa
大家早上好。 我有一个简单的Hello World应用程序从基本的“Hello World”模板创建。我已经在主窗体上添加了一个简单的按钮(在一个CodeNameOne GUI设计器中),我试图通过单击“action event”来激发一个action事件。我正在保存GUI设计器之前包含的内容,以使一个事件正如它在这里描述的-代号为一,动作事件不工作-需要解释 但是GUI设计师要求我选择一些文件名