当前位置: 首页 > 知识库问答 >
问题:

react.js中的密钥绑定

太叔飞翰
2023-03-14

正在尝试在react中实现密钥绑定。js。做了一些研究,但仍然想知道最干净的方法是什么。例如

if (event.keyCode == 13 /*enter*/) {
  function()
}
if (event.keyCode == 27 /*esc*/) {
  anotherfunction()
}

共有3个答案

堵宏毅
2023-03-14

这是我的搜索组件,请看一下onSearch函数。我使用无键盘绑定来完成escape键清除输入和散焦。

import React from "react"
import _debounce from "lodash.debounce"
import "./stylesheets/search"

export default class Search extends React.Component {

  displayName = "Search"

  static propTypes = {
    bucketName: React.PropTypes.string,
    placeholder: React.PropTypes.string,
    onSearchUpdated: React.PropTypes.func,
  }

  state = {
    search: "",
    placeholder: "Search",
    bucketName: "",
  }

  componentWillMount() {
    this.delayedCallback = _debounce((event) => {
      let search = event.target.value
      this.setState({
        search,
      })
      this.props.onSearchUpdated(search, this.props.bucketName)
    })
  }

  onSearch = (event) => {

    if (event.keyCode === 27) {
      event.target.value = ''
      this.refs.input.blur()
    } else {
      this.refs.input.focus()
    }

    event.persist()
    this.delayedCallback(event)
  }

  render() {
    return (
      <div className="search">
        <div className="row">
          <div className="col-xs-12 search__container form-group">
            <input
              ref="input"
              className="form-control search__field"
              placeholder={this.props.placeholder}
              name="search__field"
              id="search__field"
              type="text"
              onKeyDown={this.onSearch}
            />
          </div>
        </div>
      </div>
    )
  }
}
孟豪
2023-03-14

步骤1:在构造函数中定义它

  constructor(props) {
    super(props);

    this.state = {        
    }
    this.handleEnterKeyPress = this.handleEnterKeyPress.bind(this)
  }

步骤2:在render方法中编写

 render() {   
            return (             
                   <input className ="pageText" type="text" value= "value" onKeyPress = {this.handleEnterKeyPress} />                       
            )
          }

步骤3:在类中写入各自的函数

handleEnterKeyPress(e) {
    if (e.charCode == 13) {
      // your code
    }
  }
吕子真
2023-03-14

当组件安装和卸载时,我最终绑定了keydown事件:

...

componentDidMount: function() {
  $(document.body).on('keydown', this.handleKeyDown);
},

componentWillUnMount: function() {
  $(document.body).off('keydown', this.handleKeyDown);
},

handleKeyDown: function(event) {
  if (event.keyCode == 13 /*enter*/) {
    this.okAction();
  }
  if (event.keyCode == 27 /*esc*/) {
    this.cancelAction();
  }
},

render: function() {
  return this.state.showDialog ? (
    <div className="dialog" onKeyDown={this.handleKeyDown}>

...

也许有更好的方法可以做到这一点。该函数用作对话框组件的一部分:https://github.com/changey/react-dialog

 类似资料:
  • 我用过这个命令 生成密钥库。它工作正常,但从我读到的内容来看,这个命令还应该提示您输入密钥密码(而不是存储密码)?我从来没有收到过这样的提示。我能跑 查看密钥库的内容。钥匙似乎就在那里。。。正确的别名在那里。在哪里获取/设置特定别名的密码? 我有一个key.properties在Android目录 在build.gradle我有: 当我试图生成一个发布版本时,我得到了 我想它可能与keyPassw

  • 所以,我正在制作一个应用程序,当你点击一个按钮(jButton1)时,它会打印“Hi”(例如) 现在,我还有一个文本框。在文本框中,您需要指定一个键。 当你按下你指定的键时,它会运行jButton1。doClick() 更新:这是一个自动点击器。所以,我有一个布尔启动如果我键入k(从应用程序中),我希望它将布尔启动设置为true。如果我再次键入k,并且布尔启动为真,则将其设置为假。 太谢谢你了!

  • 问题内容: 我想在单击该div或same的任何子元素时传递父ID 。但是我无法实现。请告诉我我在哪里出错。代码如下: 问题答案: 要将参数传递给事件处理程序,我们需要使用 currying 。使用上述方法时,在调用render时一直没有创建新函数。

  • 我想通过单击该div或同一的任何子元素传递父id。但我无法实现。请告诉我我哪里犯错了。代码如下:

  • 我一直在寻找将键绑定附加到JButton的答案,但仍然没有成功。我有以下由两个类组成的简单程序。我尝试了几种方法使用getInputMap()和getActionMap(),但都没有成功。我希望它执行以下操作:当我按键盘上的键“1”时,它会按JButton btn1,当我按键“2”时,它会按JButton btn2(因此JLabel上会出现1或2)。 //类1:// 更新:(我还没有15岁的名声,

  • 我有一个在NeoVim中没有按预期发射的关键命令。下面是我neovim配置的摘录: 来自:nmap的适用条目显示绑定尚未被覆盖。 但按

  • 问题内容: 我正在编写NIO服务器,并希望根据用户请求进行响应,即将一些数据写入通道。 读取一些数据后,我想响应。这意味着我需要添加到键,然后将键添加到“ 选定键”集中 ,然后一旦键出现在选定集中,就将一些内容写入通道。 如何将密钥显式添加到所选集中? 问题答案: 你不能 从Javadoc: 键可能无法直接添加到所选键集中。 您只能从中删除密钥。 但是您不需要任何这些。如果要写,只需写,且 仅当

  • 问题内容: 我用别名为:的密钥对我的JWS应用程序MemorizEasy进行了签名。 我不记得为什么选择了这么长的别名。我怀疑这只是备忘录,但是在我的项目设置中,我有: 我现在正在更新应用程序,并使用maven将别名指定为: 但这行不通。尝试使用别名的另一个键是可行的。 那我可以更改密钥的别名吗?如果是这样,怎么办?否则,为什么Maven不接受我的别名? 问题答案: 可以使用以下命令在密钥库中复制