react实现设置组合快捷键

分析下设置快捷键:
1.首先组合快捷键第一个必须为功能键(shift、ctrl、alt)且最后一个键不能为功能键,
2.组合键的键数大于1(shift+V),小于等于4(ctrl+shift+alt+A)
3.当出现功能键+普通键+功能键时(如shift+A+alt)时,应替换为功能键+功能键+(shift+alt+),就是功能键必须相连,不相连最后一个功能键把普通键替换掉,
4.当出现不符合规则的组合时需要变回未改变时的状态

state = {
    oldKey: 'CTRL+F12',
    newKey: 'CTRL+F12'
  }
 <Input onKeyDown={this.onKeyDown} onKeyUp={this.onKeyUp} value={this.state.newKey}/>

总的来说就是实现一个react的双向绑定。让input的值与state中的newKey绑定起来,当然这要结合两个事件onKeyDown事件和onKeyUp事件。

functionKey=['Ctrl', 'Shift', 'Alt'];
functionKeyCode=[16, 17, 18];
keyCombin = [];
functionKeyExist=(v)=>{ //检测是否含有功能键
  return this.functionKey.indexOf(v) !== -1
}
functionKeySelect = (v) => {
    // 当前是否选中了特殊键
    return this.keyCombin.indexOf(v) !== -1
  }
  lastKey = () => {
    // 最后一位是否是特殊键
    const v = this.keyCombin[this.keyCombin.length - 1] 
    return this.functionKeyExist(v);
  }
  onlyAlt = () => {
    //是否只含有alt一个功能键
    if ((this.functionKeyExist.indexOf('Alt') !== -1) && (this.functionKeyExist.indexOf('Ctrl') === -1) && (this.functionKeyExist.indexOf('Shift') === -1)) {
      this.setState({newKey: 'alt+f12'})
    }
  }
  onCheck = (v: string) => {
    if (this.functionKeySelect(v)) { // 特殊键存在了什么也不做
    } 
    else { // 不存在就追加 但是最后一个不能是特殊键
      const b = this.lastKey ()
      // 如果最后一位是特殊键 追加
      if (b) {
        this.keyCombin.push(v);
        this.setState({shortCut: this.keyCombin.join('+')})
      } else {
        // 如果不是 替换
        this.keyCombin.pop();
        this.keyCombin.push(v);
        this.setState({shortCut: this.keyCombin.join('+')})
      }
    }
  }
  onKeyUp = () => {
    this.onlyAlt()
    if (this.lastKey()) {
      this.setState({newKey: 'alt+f12'})
    }
    if (this.keyCombin.length === 1) {
      this.setState({newKey: 'alt+f12'})
    }
    this.keyCombin = []
  }
  onKeyDown = (e) => {
    if (e.ctrlKey || e.shiftKey || e.altKey) {
      e.ctrlKey &&  this.onCheck('Ctrl') 
      e.shiftKey &&  this.onCheck('Shift') 
      e.altKey &&  this.onCheck('Alt') 
    }
    this.functionKeyCode.indexOf(e.keyCode) === -1  &&   this.onCheck(String.fromCharCode(e.keyCode))
  }

功能就是这样,这是带我的师傅写的,功能齐全,方法简单。我自己写了一天用的方法还特别复杂,还有一点小bug,差距是真的大,非常感激带我的师傅,对我十分照顾。不知道什么时候我也能像他一样强。

React中创建.tsx文件的快捷键可以根据你使用的编辑器或IDE而有所不同。以下是一些常见的编辑器和IDE中创建React TypeScript文件的快捷键: 1. Visual Studio Code(VS Code): - 在VS Code中,你可以使用以下快捷键来创建.tsx文件: - 在文件资源管理器中,右键单击所在的文件夹,选择“新建文件”或“新建文件夹”,然后输入文件名以.tsx结尾。 - 使用快捷键Ctrl + N(Windows)或Cmd + N(Mac)打开新建文件窗口,然后输入文件名以.tsx结尾。 - 创建.tsx文件后,你可以在其中编写React组件代码。 2. WebStorm: - 在WebStorm中,你可以使用以下快捷键来创建.tsx文件: - 在文件资源管理器中,右键单击所在的文件夹,选择“New” > “TypeScript File”或“TypeScript React Component”。 - 使用快捷键Ctrl + Alt + N(Windows)或Cmd + Alt + N(Mac),然后选择“TypeScript File”或“TypeScript React Component”。 - 创建.tsx文件后,你可以在其中编写React组件代码。 3. Sublime Text: - 在Sublime Text中,你可以使用以下步骤来创建.tsx文件: - 使用快捷键Ctrl + Shift + P(Windows)或Cmd + Shift + P(Mac)打开命令面板。 - 输入“New File”并选择“File: New File”命令。 - 输入文件名以.tsx结尾,然后按Enter键。 - 创建.tsx文件后,你可以在其中编写React组件代码。 这些是一些常见的编辑器和IDE中创建React TypeScript文件的快捷键。如果你使用的是其他编辑器或IDE,请参考其官方文档或搜索相关资源以获取相应的快捷键。希望对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值