web-dev-qa-db-ja.com

送信後にフォーカスを維持するためにReact Native TextInputを取得するにはどうすればよいですか?

私がやろうとしていることを説明することはできますが、 このReactJSの例 はまさに私が望んでいることのウォークスルーです。問題は、reactNativeの同等物が何であるかを理解できないことです。

基本的に、TextInputでreturnキーを押すと、テキストがクリアされ、フォーカスが維持されます。

何かご意見は?

11
brysgo

blurOnSubmitプロパティを使用してPRを送信しました。

falseに設定すると、TextInputがぼやけることはありませんが、onSubmitEditingは引き続き起動します。

うまくいけば、それはマージされます。 :)

https://github.com/facebook/react-native/pull/2149

21
Dave Sibiski

私は次の(実用的な)解決策を思いつきました:

var NameInput = React.createClass({
  getInitialState() {
    return {
      textValue: ''
    }
  },

  clearAndRetainFocus: function(evt, elem) {
    this.setState({textValue: elem.text});
    setTimeout(function() {
      this.setState({textValue: this.getInitialState().textValue});
      this.refs.Name.focus();
    }.bind(this), 0);
  },

  render() {
    return(
      <TextInput
        ref='Name'
        value={this.state.textValue}
        onEndEditing={this.clearAndRetainFocus} />
    )
  }
});

したがって、基本的に編集を終了するときに、textValue状態をTextInputの値に設定し、その直後(setTimeout内)にデフォルトに戻します。 (空)そして要素に焦点を合わせ続けます。

6