を未定義反応します。他の関数も動作します。は、私は、子コンポーネントからこの関数を呼んでいるこの
答えて
.bind(this)
を使用してcontext
をバインドするか、arrow function
を使用すると、arrow function
がこの仕事を行います。
removeWorkout: function (workoutId) {
return axios.delete('/delete', {
params: {
id: workoutId
}
}
.then(function(response){
// "this" now refers to your function(response){...} callback
this.componentDidMount();
});
},
あなたが解決方法:
使用すると、この:this
は、あなたのコールバック関数にリバウンドますので、これは動作していない
.then((response) => {
this.componentDidMount();
});
または
.then(function(response) {
this.componentDidMount();
}.bind(this));
ありがとうございました!それはそれを修正! –
理由がありますこの問題はarrow functionを使用して親のスコープ(this
は)あなたのリアクトコンポーネントを参照します:
removeWorkout: function (workoutId) {
return axios.delete('/delete', {
params: {
id: workoutId
}
}
.then((response) => {
this.componentDidMount();
});
},
かを変数にthis
をキャプチャする前に、あなたのコールバック入力して:サイドノートとして
removeWorkout: function (workoutId) {
var _this = this;
return axios.delete('/delete', {
params: {
id: workoutId
}
}
.then(function(response){
_this.componentDidMount();
});
},
を、あなたが本当に手動でトリガすべきではありませんライフサイクルメソッドの場合、setState
を呼び出してコンポーネントの更新をトリガーすることが望ましいでしょう。
ありがとう、私はそれがsetStateを使用する方が良いと思ったが、私はthis.stState(this.state)を試しているときに間違いがある –
JavaScriptのthis
は、メソッドが呼び出されたオブジェクトを参照する魔法のキーワードです。これは、期待しているオブジェクトに対してメソッドが呼び出されないと、多くの問題を引き起こす可能性があります。 JavaScriptでがどのように動作するかについての詳細なコンテンツがあります。here
明示的に関数をバインドして、this
が常にその中の同じオブジェクトを参照するようにすることで回避できます。 。
constructor(props) {
super(props);
this.function = this.function.bind(this);
}
ただし、この場合には、あなたがその一部であるcomponentDidMount
を、使用している:あなたは[Function.bind]使用(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)あなたの関数は、「機能」と命名されている場合は、あなたが行うことができますすることを行うために、あなたはおそらくそれをバインドすべきではありません。直接componentDidMount()
を呼び出すと、通常は悪い習慣で、
removeWorkout: (workoutId) => {
return axios.delete('/delete', {
params: {
id: workoutId
}
}
.then(response =>
this.componentDidMount());
)}
ところで:代替矢印関数は常に静的にバインドされthis
を持っているように、矢印の機能を使用することです。 React lifecycleメソッドを直接呼び出すべきではありません。代わりに、このメソッドとcomponentDidMount
メソッドの両方で呼び出す関数を抽出して呼び出す必要があります。
ありがとうございます!それも動作します! –
- 1. 私の関数呼び出しはインサイドAはここで
- 2. Vueのは、私はこのコードを持っている子コンポーネント
- 3. 親コンポーネントから子コンポーネント関数を呼び出す
- 4. Angular2 - 私はこの子を持つコンポーネントを持っている子コンポーネント
- 5. angular2は、私はこのように私のコンポーネントからサービスを呼び出す
- 6. 私はここで、関数の引数
- 7. 演算子は、私は、この関数を書いた
- 8. React Nativeの親コンポーネントから子関数を呼び出す
- 9. 子コンポーネントの親コンポーネント関数を角で呼び出す
- 10. 親コンポーネントから子コンポーネント内の関数を呼び出す最も良い方法は?
- 11. 関数のパラメータを識別子と呼ぶことはできますか?
- 12. Angularjs2あるコンポーネントから別のコンポーネントに関数を呼び出す方法は?
- 13. 関数fscanf - 私は私が間違ってやっているのか分からない、ここで
- 14. ComboBoxコンポーネントは、私はこのコンポーネントを使用しているデフォルト
- 15. Reactコンポーネントでは、<span>をclickabelにしてこの反応コンポーネントの関数を呼び出す方法は?
- 16. 私たちはこの関数をクイックソートと呼ぶことができます
- 17. コンポーネントの関数をAngular2の他のコンポーネントから呼び出す方法は?
- 18. 関数を1つのjsから2番目の関数に呼び出すことはできません
- 19. Angular 4コンポーネントのテンプレートプロパティから関数を呼び出すことはできますか?
- 20. OpenCL - カーネル内から別の関数を呼び出すことは可能ですか?私はここにあるチュートリアルと一緒に、次のい
- 21. 私はWindows C++関数WinHttpGetProxyForUrlをPythonから呼びたいと思います。これはできますか?
- 22. セッション私はここの関数を作成している
- 23. 入れ子の関係はここで
- 24. Hello dojo !:この関数はどこから呼び出しますか?
- 25. 反応内の子コンポーネントに関数を渡すことはできませんか?
- 26. Angular2は別のコンポーネントから1つの関数コンポーネントを呼び出す
- 27. 親コンポーネント内の配列は、angular2の子コンポーネントから割り当てることができません
- 28. UnityException:この関数を呼び出すことはできません
- 29. Angular2 - 親コンポーネント内の子コンポーネントから関数を実行
- 30. なぜこのjavascript関数はこの他の関数を呼び出せませんか?
'.then((response)=> {this.componentDidMount();})' –