React autoFocus将光标设置为输入值的开头

Reg*_*ins 8 javascript reactjs

我有一个控制输入,最初显示的值.我已将该输入设置为autoFocus,但是当我希望它在最后出现时,光标出现在输入的开头.我理解这可能是因为autoFocus是在值之前添加的,但我不是100%肯定.

在输入字段结束时完成光标初始化的最佳方法是什么?

var Test = React.createClass({

    getInitialState: function() {
        return {
           teamId: 'fdsfds'
        };
    },

    render: function() {
        return (
                <input type="text" autoFocus value={this.state.teamId} onChange={this.setTeamId} />
        );
    },

    setTeamId: function(event) {
        this.setState({ teamId: id });
    },

});

ReactDOM.render(
  <Test />,
  document.getElementById('container')
);
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/69z2wepo/34486/

Ted*_* A. 21

一个解决方案

<input
  type="text"
  autoFocus
  value={this.state.teamId}
  onChange={this.setTeamId}
  onFocus={function(e) {
    var val = e.target.value;
    e.target.value = '';
    e.target.value = val;
  }}
/>
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/o3s05zz4/1/

适应这个答案:https://stackoverflow.com/a/2345915/1589521


Spa*_*hut 8

这实际上有效:

componentDidMount() {
    const input = this.input;
    const length = input.value.length;
    input.focus();
    input.setSelectionRange(length, length);
}

render() {
   return (
       <input ref={ref => this.input = ref} ... >
   )
}
Run Code Online (Sandbox Code Playgroud)

附言。如果您需要支持 IE8 及更低版本,则需要使用 IE 特定的检查。