こんにちは、私は反応を使用して良いverryではないと私はなぜ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」を持っています。 [strict mode](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)で作業を開始し、 'this'の参照をどこかに保存してください。 – Ryan