2015-12-09 28 views
7

我在clojurescript(使用試劑希望不重要)上編寫了一個使用反應本地機器人的計時器應用程序。反應原生。當頁面在計時器刻度上重新繪製時,如何保持焦點到文本輸入

我有一個TextInput我接受來自用戶的文本來命名定時器。每當我的計時器滴答時,整個android應用程序重新呈現,我失去了對TextInput的重點。我目前正在使用onChangeText來保存我正在輸入的字符,有沒有辦法在定時器正在滴答時保持對文本輸入的關注?

謝謝。

+1

你嘗試過'View.requestFocus();'?我不明白爲什麼每次打勾時「應用程序重新渲染」。 –

回答

6

最簡單的解決方法是在componentDidUpdate方法內調用this.refs.yourTextInput.focus()。但是,這可能會導致鍵盤動畫下來,然後重新生成動畫。

問題的根源在於您的計時器值和您的TextInput共享相同的範圍,因此當狀態更新時,計時器和TextInput都將通過render函數重新呈現。理想情況下,您可以:

將您的計時器文本放入自定義組件中,然後在該自定義組件上添加一個方法以設置其自己的狀態。只要自定義組件的狀態是正在更新的狀態,這將只導致自定義組件重新呈現。

+0

這可能工作(我可能會接受它的賞金),但它確實需要一些有狀態的變化,沒有一個狀態樹,所以它不是純粹的功能。我有點想知道是否有一個解決方案堅持https://github.com/staltz/flux-challenge。我假設反應+流量像體系結構在用戶輸入+異步更新方面存在問題。 – GTDev

相關問題