嗨,我不是很好使用反应,我不明白为什么我的this.setState不在这里工作,但在一些其他文件是。在我的其他文件中,它的写法完全相同,并且可以工作,但不在这里。有人能告诉我为什么吗?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") {
为什么你在'if'里面使用'IIFE'? –
'function(prop){'是一个新的(非箭头)函数;它有一个新的'this'。开始在[严格模式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)中工作,并在某处存储对“this”的引用。 – Ryan