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ライブラリとしてどうなのよ… |
どちらが正義なのかは軽々しくは申せませんが、私はanomymous10001さんの指摘が正しいと思いますし、何より丁寧ですね。
正しさって「罵声の大きさ」で決まるものではありませんから。
どちらが正義なのかは軽々しくは申せませんが、私はanomymous10001さんの指摘が正しいと思いますし、何より丁寧ですね。
正しさって「罵声の大きさ」で決まるものではありませんから。
おいこら糞素人
すばらしい解説ありがとう
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
皆様、コメントありがとうございます。どちらが「正義」かは読者が判断すると思いますので、ここで議論されなくても良いかと思います。