想請問一下各位大神ReactJS的問題.
有寫了一個js檔案給Component引用,我想在js檔裡面中去更改this.state,但是js檔中的this是指到function本身,有辦法可以set Component中的state嗎?謝謝
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Functions/Arrow_functions
Mickeo Leung 我簡化整理成這樣 https://gist.github.com/Hsueh-Jen/c1879f3e6ba21e4c949af81ff73e0c1a
李正偉 (Aegg Li) 我再研究看看,感謝
不考慮把this.state 以一個argument pass 到validator 嗎? 不然validator 是stateless and reusable for any class 情理上不應該會有神奇的scope 在背後把scope pass 過去吧。
因為validator在宣告後,會很常用到valdiate(),而且會一直setState,抱歉在sample code漏掉這段,總之就是在validator裡面會很常取用this.state跟this.setState,才想說有沒有辦法可以直接越級去抓到外層的this.state。
我的想法是new validator 時就把this.state pass 過去。 在validator 是用pass 過去的local state 去做comparison 而不是直接的用this.state。其他code 的調用和流程應該沒有分別吧。 如果想連setState 也用到就either pass 整個this 或者加一個attribute 我感覺這樣做會少了奇怪的dependency。
反而我覺得rule 應該是在validate function 才pass 過去把。那就可以reuse validator for 不同的rule 的validation
我的想法是validator建立時就把規則給他,我會這個頁面中作各種驗證,可能會驗證多個欄位,或是只驗證某一個,所以每次都pass會很麻煩,確實這麼做會有很高的依賴性。
不過pass this進去,好像是reference,所以其實問題好像就解決了,感謝你