我在clojurescript(使用試劑希望不重要)上編寫了一個使用反應本地機器人的計時器應用程序。反應原生。當頁面在計時器刻度上重新繪製時,如何保持焦點到文本輸入
我有一個TextInput
我接受來自用戶的文本來命名定時器。每當我的計時器滴答時,整個android應用程序重新呈現,我失去了對TextInput
的重點。我目前正在使用onChangeText
來保存我正在輸入的字符,有沒有辦法在定時器正在滴答時保持對文本輸入的關注?
謝謝。
我在clojurescript(使用試劑希望不重要)上編寫了一個使用反應本地機器人的計時器應用程序。反應原生。當頁面在計時器刻度上重新繪製時,如何保持焦點到文本輸入
我有一個TextInput
我接受來自用戶的文本來命名定時器。每當我的計時器滴答時,整個android應用程序重新呈現,我失去了對TextInput
的重點。我目前正在使用onChangeText
來保存我正在輸入的字符,有沒有辦法在定時器正在滴答時保持對文本輸入的關注?
謝謝。
最簡單的解決方法是在componentDidUpdate
方法內調用this.refs.yourTextInput.focus()
。但是,這可能會導致鍵盤動畫下來,然後重新生成動畫。
問題的根源在於您的計時器值和您的TextInput共享相同的範圍,因此當狀態更新時,計時器和TextInput都將通過render
函數重新呈現。理想情況下,您可以:
將您的計時器文本放入自定義組件中,然後在該自定義組件上添加一個方法以設置其自己的狀態。只要自定義組件的狀態是正在更新的狀態,這將只導致自定義組件重新呈現。
這可能工作(我可能會接受它的賞金),但它確實需要一些有狀態的變化,沒有一個狀態樹,所以它不是純粹的功能。我有點想知道是否有一個解決方案堅持https://github.com/staltz/flux-challenge。我假設反應+流量像體系結構在用戶輸入+異步更新方面存在問題。 – GTDev
你嘗試過'View.requestFocus();'?我不明白爲什麼每次打勾時「應用程序重新渲染」。 –