【发布时间】:2020-11-12 01:55:41
【问题描述】:
我在使用 React 编码时遇到了一个问题。我有以下代码段:
<Popconfirm
placement="topRight"
title="Are you sure to delete this task?"
onConfirm={confirm} okText="Yes" cancelText="No" // [1]
>
<a>delete</a>
</Popconfirm>
我有这样的确认功能:
const confirm = () => { // [2]
message
.loading("Deleting...", 1.8)
.then(() => message.success("Todo item deleted!", 1.3));
postDeleteData('/todo/', { method: 'delete', keyid: 42}) // [3]
.then(data => {
if (data.success) {window.location = '/todo/';}
})
console.log('confirmed');
};
现在,到目前为止一切正常。但是,在我进行以下更改后,事情将无法正常工作:
- 将
confirm更改为confirm(42)(仅作为测试) - 将
confirm = () =>更改为confirm = (kid) => - 将
{keyid: 42}更改为{keyid: kid}
这基本上将参数传递给确认调用。发生这种情况时,我希望一切都能顺利进行:
如您所见,代码开始自动无限执行,无需任何按键或操作,这就是问题所在。谁能告诉我原因?提前致谢。
资源
async function postDeleteData(url = '', data = {}) {
const formData = new FormData();
formData.append('method', data.method);
formData.append('keyid', data.keyid);
const response = await fetch(url, {
method: 'POST',
credentials: 'include',
mode: 'same-origin',
headers: {'X-CSRFToken': csrftoken,},
body: formData
});
return response.json();
}
# Django views
class IndexView(View):
template_name = "todo/index.html"
def get(self, request, *args, **kwargs):
return render(request, self.template_name)
def post(self, request, *args, **kwargs):
if 'delete' in request.POST.get("method"):
Todo.objects.filter(id=request.POST.get("keyid")).delete()
return JsonResponse({'success': True})
else:
return JsonResponse({'success': False})
【问题讨论】:
标签: javascript django reactjs post antd