We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
https://jsprimer.net/use-case/todoapp/event-model/#event-emitter-todolist-model
src/model/TodoListModel.jsのonChangeは以下のようになっていますが、
src/model/TodoListModel.js
onChange
onChange(listener) { this.addEventLister("change", listener); return () => { this.removeEventLister("change", listener); }; }
単に以下のような実装でも正常に動作するように思いました。
onChange(listener) { this.addEventLister("change", listener); }
returnでremoveEventListerを呼ぶ関数を返しているのには、どのような意味があるのか教えていただけますでしょうか。
return
removeEventLister
The text was updated successfully, but these errors were encountered:
const unlisten = onChange(() => { /* onChangeのハンドラ */ }); // onChangeのハンドラを解除する unlisten();
というパターン向けにremoveEventLister(登録したイベントリスナーを解除する処理)を返していた感じですね。 登録したイベントは解除しないとメモリリークの原因となるので、ちゃんと解除できるように作るのがいいのですが、正直このサンプルだとリロードで十分なのでそこまでいけてないという感じですね。
ホントは mountで addEventLister して
mount
addEventLister
js-primer/source/use-case/todoapp/final/final/src/App.js
Line 42 in 7c8a444
unmountで removeEventLister するという対比構造にする予定で書いていたのですが、 unmountの部分が省略されてしまった残骸みたいなものになっていますね。 return () => this.removeEventLister("change", listener); の部分は消そうかなと思います。
unmount
return () => this.removeEventLister("change", listener);
Sorry, something went wrong.
ご回答ありがとうございます。本書のレベルは私にちょうど良く、たいへん勉強になっています。おかげさまで上記のやり取りが理解できるほどになってきたかと思います。ありがとうございます。
fix(todo): removeEventListerを削除
47eb19a
TODOアプリのユースケースでは解除まで行っていないので削除する fix #607
86a7ceb
azu
Successfully merging a pull request may close this issue.
該当ページ
https://jsprimer.net/use-case/todoapp/event-model/#event-emitter-todolist-model
質問内容
src/model/TodoListModel.js
のonChange
は以下のようになっていますが、単に以下のような実装でも正常に動作するように思いました。
return
でremoveEventLister
を呼ぶ関数を返しているのには、どのような意味があるのか教えていただけますでしょうか。The text was updated successfully, but these errors were encountered: