Skip to content

ReactInputSelection的使用

司徒正美 edited this page Sep 19, 2017 · 2 revisions

ReactInputSelection的出现是React从技术上拉开距离的标志,很少有库能搞定Range与seletion。简言而之,就是输入区的光标与拖动时圈定的选择区。这个非常难实现。由于React每次都是全量更新,可能导致焦点消失,从而导致光标与选区都没有了,在做表格验证或富文本编辑器时,就需要用到而更新时保存光标与选区,在更新后还原。

由于这功能的代码量比较多,就不纳入核心库了,大家按需加载吧。代码基本上从React核心库内扒下来的,只做了少量修改。

用法如下:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">   
  <script type='text/javascript' src="./dist/React.js"></script>
  <script type='text/javascript' src="./lib/ReactInputSelection.js"></script>

   <!--<script src="./test/react-lite.js"></script>-->
     <script type='text/javascript' src="./lib/babel.js"></script>

  <script type='text/babel'>
class App extends React.Component {
  constructor(props){
    super(props)
    this.state = {
      value: 111
    }
  }
  change(e){
    console.log(e.target.innerHTML)

    this.setState({
      value: e.target.innerHTML 
   })
  }
  render(){
    return (
        <div contentEditable={true} onInput={ this.change.bind(this) } >{this.state.value}
        </div>
    );
  }
}
ReactDOM.render(<App />,  document.getElementById('example'))
 
  </script>

</head>

<body>

    <div>开发者工具</div>
    <div id='example'></div>

</body>

</html>