Created
July 17, 2015 15:44
-
-
Save anonymous/1944f34703bcb63131d8 to your computer and use it in GitHub Desktop.
岡部の自称FRPライブラリ「worldcomponent」がFacebook Reactを正しく使っておらずエラーを起こすことの確認方法
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
岡部の自称FRPライブラリ「worldcomponent」がFacebook Reactを正しく使っておらずエラーを起こすことの確認方法 | |
1. Chromeで http://kenokabe-techwriting.blogspot.jp/2015/05/react-html-frp.html に行きましょう | |
2. 下のほうのクリックカウンタまでスクロールしましょう | |
3. Ctrl+Shift+Iを押してから「Console」タブをクリックしましょう | |
4. React.unmountComponentAtNode(document.getElementById("mountpoint")); を実行しましょう。 | |
クリックカウンタが消えます(これは正常) | |
5. var mount = React.render(React.createElement(TopComponent), document.getElementById("mountpoint")); | |
を実行しましょう。エラーが出て、それ以降は正常に動作しません(本来はちゃんと復活するべき) | |
原因はまさに岡部が無駄長文ブログで言い訳してるforceUpdateのせい。 | |
なお、仮にforceUpdateのエラーが起きなかったとすると4と5を繰り返すだけでメモリリークが起きるはず。 | |
理由は、クリックカウンターの | |
componentDidMount: function() | |
{ | |
var com = this; | |
___.world = com.props.___clicks | |
.compute(function(x){com.forceUpdate();}); | |
___.world = ___totalClicks | |
.compute(function(x){com.forceUpdate();}); | |
}, | |
から呼び出されるworldcomponentの | |
compute: function(f) | |
{ | |
var f1 = function() | |
{ | |
computingF[computingF.length] = f; //push f | |
value.val = initialVal; | |
}; | |
return f1; | |
}, | |
が配列computingFに関数を追加するだけで、決して解放しないから。 | |
そもそも関数型であるはずのユーザ側が、もろに命令的な再描画呼び出しを自分で登録しなきゃいけないって、 | |
FRP以前にGUIライブラリとしてどうなのよ… |
プリプリ・カリカリせずに、冷静に、大人の対応で、紳士的に話しましょうよ。なぜ、あなたは作者でもないのに、最初から喧嘩腰なのですか?ここ、説明してみてください。
「正義感」でしょうか。でも、言葉遣いには気を付けましょう。ネチケットが大事。
落ち着いて。作者には到底できないからこそ、あなたにお願いしているのかもしれません。私が、変わってお願いします。やってみてください。
「正義感」かな。大人の対応、紳士的というおまえのysm-sexっていうふざけたハンドルもムカつくし、慇懃無礼にノコノコ出てきた態度もムカつく。
高圧的な態度の理由が正義感とは随分とチャイルディッシュですね。
あなたの言う正義って、ご自分だけが納得する正義じゃないですか。
とても紳士的とは言えませんね。
皆様、コメントありがとうございます。どちらが「正義」かは読者が判断すると思いますので、ここで議論されなくても良いかと思います。
どちらが正義なのかは軽々しくは申せませんが、私はanomymous10001さんの指摘が正しいと思いますし、何より丁寧ですね。
正しさって「罵声の大きさ」で決まるものではありませんから。
どちらが正義なのかは軽々しくは申せませんが、私はanomymous10001さんの指摘が正しいと思いますし、何より丁寧ですね。
正しさって「罵声の大きさ」で決まるものではありませんから。
おいこら糞素人
すばらしい解説ありがとう
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
・僭越ながら、anonymous10000さんは最初のほうのコメントで「worldcomponentじゃなくて、Reactのバグ」と主張されたり、mapの戻り値のGCとcomputingF自体のことを混同されたりして私のことを嘘つきと批判なさいましたが、それらの誤りについて特に何かおっしゃることはないのでしょうか。
混同というより、書き方が悪いんじゃない?だから誤りじゃないし特に言うことはないね。
・unmountは動的HTMLフレームワークに必須のReact標準の機能なので、数多くのFlux実装等もすべて対応しており、React上のFRPライブラリを自称するworldcomponentが、よもや「unmount処理」に対応していないとは思いませんでしたが了解しました。
HTMLフレームワーク的には、単純に非表示モードにすれば事足りる。コンポーネントをアンマウントするのが必須だとは思えないし、「標準」というのは単純にそのようなAPIがある、っていう事実の誇張に過ぎないが、同じく歪曲誇張の「バグ」の連呼について、「バグではない」とやっと馬鹿が了解したのは一歩前進かもしれない。
・ここまで繰り返し何度もコメントして「worldcomponentはunmount処理に対応していないがバグではない」と主張されるぐらいならば、anonymous10000さんがworldcomponentを改良して「unmount処理」に対応させたほうが遥かに手っ取り早かったのではないかと思いましたが、それができなかった何か深いご事情があったものと推察しました。どうも何度もコメントいただきありがとうございました。
なんで俺が人のライブラリを拡張する作業せねばならんの?作者に直接言えよ。おまえがUnmount処理に対応させたいから拡張したい、ってGitHubなんだからIssue投げるか直接メールすりゃあええだろ。所詮おまえがバグと歪曲誇張を騒ぎ立てたいだけで必須でもないんだし、どうしても需要あんならてめーでやれば?