gpt4 book ai didi

javascript - this.setState 不是一个函数,为什么它不起作用?

转载 作者:行者123 更新时间:2023-11-30 11:29:25 26 4
gpt4 key购买 nike

嗨,我不太擅长使用 React,我不明白为什么我的 this.setState 在这里不起作用,但在其他一些文件上却可以。在我的其他文件上,它的写法完全相同,并且可以工作,但在这里不行。谁能告诉我为什么?

test(event){
event.preventDefault();
var regex_mongoinclude = document.getElementById("regexinclude").value;
var regex_mongoexclude = document.getElementById("regexexclude").value;
if (this.props.item.type == "email") {
(function(prop) {
var text = document.getElementById("name_sub").value;
var reg = /^([a-zA-Z0-9.\-_]+[@]{1}[a-zA-Z0-9\-_]+[.]{1}[a-zA-Z0-9\-_]+[,]*)+/;
if(reg.test(text)==true) {
Subs.update(
{ _id: prop.item._id },
{
text,
type :"email",
createdAt: new Date(),
regex_mongoinclude,
regex_mongoexclude,
topic:prop.parent._id,

},
{ upsert: true }
)
this.setState({
showMessage: true,
isError: false
});
} else {
this.setState({
showMessage: true,
isError: true
});
}
})(this.props)
} else if (this.props.item.type == "slack") {

最佳答案

在这一行中:

(function(prop) {

您正在创建一个新的闭包,实际上丢失了对正确的 this 对象的引用。您可以将其替换为:

((prop) => {

箭头函数使正确的闭包保持完整。但老实说,我不确定为什么在这种情况下甚至需要它,您可以将代码直接放在 if 语句中,而不需要创建 IIFE。

关于javascript - this.setState 不是一个函数,为什么它不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46805732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com