我在组件中嵌套了click事件处理程序:
class ListItem extends React.Component {
...
render() {
return (
<div onClick={this.save}>
...Content...
<span onClick={this.onDeleteClick}> (Delete)</span>
</div>
);
}
...
}
Run Code Online (Sandbox Code Playgroud)
(这篇文章底部的完整,最小的例子.)
此组件用作包含组件中的"列表项".当我点击(Delete)它时会onDeleteClick按预期触发,这会对父进行回调,从而导致组件从父组件中删除.然后点击事件按预期开始冒泡.但是,它会"向上"到父列表中的下一个组件.毕竟,删除处理程序已经删除了原始目标.
如果我添加e.stopPropagation()到onDeleteClick处理程序的顶部它一切正常,但我只是想了解为什么点击事件被传递到一个完全不同的组件,只是为了确保那里没有任何其他吸烟枪.
我当前的理论是,挂起事件队列以某种方式索引到虚拟DOM中,如果您在事件处理程序期间改变虚拟DOM,则冒泡事件可能会传递到虚拟DOM中的错误组件.我原本以为鼓泡事件根本不会发射,而不是射击一个完全不同的组件.
这是怎么回事?任何其他见解?这是一个有缺陷的设计,如果是这样,有关替代品的任何建议吗?
以下是显示问题的最小示例:https://codepen.io/mgalgs/pen/dRJJyB
这是固定版本:https://codepen.io/mgalgs/pen/KqZBKp
"修复"的完整差异是:
--- orig.jsx
+++ new.jsx
@@ -32,6 +32,7 @@
}
onDeleteClick(e) {
+ e.stopPropagation();
this.props.onDeleteClick(e);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在将大型代码库移植到 Linux 内核设备驱动程序。ASIC 使用大量 DMA 通道。
我 kmalloc 内存与GFP_KERNEL|GFP_DMA. 在启动 DMA 之前,我使用 dma_map_single 来获取硬件(物理)内存地址以提供给硬件。(也会刷新/使 dcache 中的内存无效?)我有时需要 CPU 访问数据,一旦 DMA 完成,但不经常。在通过代码访问数据之前,我执行了 dma_unmap_single 以避免缓存一致性问题。
在我不需要 CPU 访问的情况下,我还需要调用dma_unmap_single吗?我应该dma_unmap_single每一个指针dma_map_single吗?是否dma_map_single消耗dma_unmap_single将释放的资源(例如,表条目)?
DMA-API.txt 不清楚良好的 DMA 内存卫生。
谢谢!
我有一个Django应用程序与nginx+ gunicorn3 gunicorn工作进程服务.偶尔(可能每100个请求一次)其中一个工作进程进入一个状态,它开始使它服务的大多数(但不是全部)请求失败,然后当它试图向我发送电子邮件时它会引发异常.该gunicorn错误日志是这样的:
[2015-04-29 10:41:39 +0000] [20833] [ERROR] Error handling request
Traceback (most recent call last):
File "/home/django/virtualenvs/homestead_django/local/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 130, in handle
File "/home/django/virtualenvs/homestead_django/local/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 171, in handle_request
File "/home/django/virtualenvs/homestead_django/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 206, in __call__
File "/home/django/virtualenvs/homestead_django/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 196, in get_response
File "/home/django/virtualenvs/homestead_django/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 226, in handle_uncaught_exception
File "/usr/lib/python2.7/logging/__init__.py", line 1178, in error
File "/usr/lib/python2.7/logging/__init__.py", line 1271, in _log
File "/usr/lib/python2.7/logging/__init__.py", line 1281, in handle
File "/usr/lib/python2.7/logging/__init__.py", line 1321, in callHandlers
File "/usr/lib/python2.7/logging/__init__.py", line 749, …Run Code Online (Sandbox Code Playgroud) 我有一个Django应用程序,将对象保存到数据库中,还有一个芹菜任务,该任务定期对其中一些对象进行一些处理。问题在于,在芹菜任务已选择要处理的对象之后,但芹菜任务实际完成处理并保存之前,用户可以删除对象。因此,当celery任务确实调用时.save(),即使用户删除了该对象,该对象也会重新出现在数据库中。当然,这对于用户来说确实很诡异。
所以这是一些显示问题的代码:
def my_delete_view(request, pk):
thing = Thing.objects.get(pk=pk)
thing.delete()
return HttpResponseRedirect('yay')
@app.task
def my_periodic_task():
things = get_things_for_processing()
# if the delete happens anywhere between here and the .save(), we're hosed
for thing in things:
process_thing(thing) # could take a LONG time
thing.save()
Run Code Online (Sandbox Code Playgroud)
我考虑过尝试通过添加原子块和事务来修复它,然后在保存对象之前测试该对象是否确实存在,以进行修复:
@app.task
def my_periodic_task():
things = Thing.objects.filter(...some criteria...)
for thing in things:
process_thing(thing) # could take a LONG time
try:
with transaction.atomic():
# just see if it still exists:
unused = Thing.objects.select_for_update().get(pk=thing.pk) …Run Code Online (Sandbox Code Playgroud) 我目前正在change_form.html通过将其放入以下内容来覆盖我的应用程序:
myproject/myapp/templates/admin/change_form.html
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我真的只想覆盖User模型的更改表单,而没有其他任何事情。如果我把它放进去,它似乎不起作用:
myproject/myapp/templates/admin/user/change_form.html
Run Code Online (Sandbox Code Playgroud)
我猜这是因为该User模型不是来自我的应用程序?
在其他应用程序(即应用程序)中覆盖change_list.html特定模型的最干净的方法是什么?django.contrib.auth
相关片段来自settings.py:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'unicorn.context_processors.site_url',
'unicorn.context_processors.consultant_data',
'unicorn.context_processors.branding',
],
'builtins': ['tracking.templatetags.tracking_extras'],
'loaders': [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
],
},
},
]
Run Code Online (Sandbox Code Playgroud) 我正在将 reCAPTCHA v3 添加到我网站上的用户注册表单中。以前,表单上的提交按钮默认处于禁用状态,并在经过一些验证(ToS 接受等)后启用。但是,当我将 reCAPTCHA 添加到提交按钮时,reCAPTCHA 代码将启用该按钮,这是我不想要的。
我在按钮上设置了一个 DOM 断点,并验证了它确实是启用该按钮的 reCAPTCHA 代码。我还有一个 codepen 演示了这里的问题,其中显示了一个带有 reCAPTCHA 的初始禁用按钮和另一个不带 reCAPTCHA 的初始禁用按钮:
<button disabled class="g-recaptcha" data-sitekey="..." data-callback="onSubmit">Button w/ reCAPTCHA</button>
<button disabled>Button w/o reCAPTCHA</button>
Run Code Online (Sandbox Code Playgroud)
带有 reCAPTCHA 的一个由 reCAPTCHA 代码启用,而另一个保持禁用状态。
reCAPTCHA v3 是否有任何配置选项可以避免自动启用其所附加的按钮?
背景:
我正在创建一个次要模式,为用户提供关于他们访问的缓冲区是否使用制表符或空格进行缩进的"提示"(只需检查缓冲区中每行的第一个字符).我计划添加的一些功能包括模式行中的信息显示和一些在使用制表符或空格,制表符宽度等之间切换的功能.
我并不真正关心这种次要模式的用处.事实上,如果不存在同样的事情,我会感到惊讶.大多数情况下,这是一种编写小模式的练习.
题:
在启用/禁用我的次要模式时,从模式行插入/删除文本的干净,非突兀的方法是什么?我不希望用户必须修改他们mode-line-format,我只想非破坏性地插入和删除文本.现在我正在使用一个看起来像这样的函数:
(defun update-indent-hints-mode-line (what-this-buffer-loves)
(let ((indent-hints-mode-line-text (concat " " "[" what-this-buffer-loves "-loving" "]"))
(my-mode-line-buffer-identification
(remq " [Tab-loving]" (remq " [Space-loving]" mode-line-buffer-identification))))
(setq mode-line-buffer-identification
(add-to-list 'my-mode-line-buffer-identification
indent-hints-mode-line-text
t))
(force-mode-line-update)))
Run Code Online (Sandbox Code Playgroud)
它工作正常,但搜索和删除"[Tab-loving]"和"[太空爱好]"似乎非常hackish和丑陋...有一个更清洁的方式来做它?
奖励积分: 对我同样卑微的小模式的卑微开头的任何评论:https: //github.com/mgalgs/indent-hints-mode/blob/master/indent-hints.el 我显然是一个elisp n00b,但我在这里学习.
我有一个使用 Django Rest Framework 的 API,我想防止重复POST请求(本着Post Once Exactly (POE)的精神)。特别是,我试图处理的场景是:
我正在尝试使用DataFrame.to_markdown包含我想要四舍五入的浮点值的数据框。如果没有to_markdown(),我可以设置pd.options.display.float_format并且一切正常,但to_markdown似乎不尊重该选项。
重现:
import pandas as pd
df = pd.DataFrame([[1, 2, 3], [42.42, 99.11234123412341234, -23]])
pd.options.display.float_format = '{:,.0f}'.format
print(df)
print()
print(df.to_markdown())
Run Code Online (Sandbox Code Playgroud)
输出:
0 1 2
0 1 2 3
1 42 99 -23
| | 0 | 1 | 2 |
|---:|------:|--------:|----:|
| 0 | 1 | 2 | 3 |
| 1 | 42.42 | 99.1123 | -23 |
Run Code Online (Sandbox Code Playgroud)
(将表中的 42.42 和 99.1123to_markdown与普通旧 df 中的 42 和 99 进行比较)
这是一个错误还是我缺少有关如何使用的信息 …
我正在为我共享相同的模板CreateView并UpdateView使用django的通用视图.我希望我的模板中的"提交"按钮在我使用时使用"添加"并在我使用时使用CreateView"更新" UpdateView.我的模板中有什么方法可以区分使用哪个视图(CreateViewvs UpdateView)?
我知道我可以使用一个单独的模板template_name_suffix,并将常见的东西放在一个单独的包含或东西中,但只是想看看是否有办法在不创建单独的模板的情况下完成它.
django ×4
python ×3
celery ×1
dataframe ×1
django-admin ×1
emacs ×1
events ×1
gunicorn ×1
html ×1
javascript ×1
linux ×1
linux-kernel ×1
locking ×1
modeline ×1
pandas ×1
reactjs ×1
recaptcha ×1
recaptcha-v3 ×1
virtual-dom ×1