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

如何使用参照进行聚焦/模糊?

王庆
2023-03-14

我正在阅读来自Reactjs的React文档。但它似乎不是为我想做的事情而工作。

我想渲染一个有嵌套div的组件。单击每个嵌套div后,它会变成一个输入。在特定div之外单击后,它将输入转换回div。

我想使用带有模糊/焦点的参考文件来实现这一点,但我似乎不知道如何让它工作。

这就是我的组件到目前为止的样子,它是一个子组件:

constructor(props) {
    super(props);
    this.textInput = React.createRef();
}
focusRef = () => {
    this.textInput.current.focus();
}
focusEvent = () => {
    console.log("focus event.");
}
render() {
    let item = <div
        className="item-class"
        ref={this.textInput}
        onFocus={this.showIt}
        onClick={this.focusRef}>Item Name</div>
    return(<div>{item}</div>)
}

查看react提供的示例代码。js。org,我想知道为什么没有onFocus事件。这不是必需的吗?当元素接收到焦点时,如何触发事件?在我的代码中,focusRef被触发,但focusEvent没有,这也是我无法理解的。其次,如何检测模糊/失焦,以便将输入切换回div?最后,我对在div和input之间交换一个元素的焦点/模糊事件如何处理渲染感到困惑,我是否需要在每次交换发生时重新渲染,也就是每次元素接收/失去焦点时重新渲染?这难道不需要在渲染之间保持元素的焦点(或缺少焦点)吗?

如果可能的话,我更喜欢不涉及钩子的解决方案。

共有1个答案

路昆杰
2023-03-14

为了使div元素可聚焦,需要使其可交互。向div添加一个制表符索引,这样就可以赋予它焦点。

function App() {
  return (
    <div className="App">
      <div 
        tabIndex={0} 
        onFocus={() => console.log('focus')} 
        onBlur={() => console.log('blur')}
      >
        Click or tab to me!
      </div>
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  rootElement
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom.production.min.js"></script>
<div id="root"></div>
 类似资料:
  • 我是MongoDB的新手! 有人能帮助我如何编写java代码来转换下面的mongo聚合查询吗?目前,我正在一个具有“spring-boot-starter-data-mongob”作为依赖项的Spring Boot应用程序中编写它。我正在考虑使用Mongo模板使用下面的查询获取分组文档。

  • 我试图实现一个非常简单的用例,一个UI特性,其中: null 这些建议和类似的建议都不起作用。我也试着愚弄一下反应,看看我能不能做点什么!我使用了真实的DOM: 而且也没用。我甚至无法理解的一件事是这样的建议:将ref作为一个方法(我“猜测”),我甚至没有尝试它,因为我有很多这样的组件,我需要ref来进一步获得每个组件的值,我无法想象如果我的ref没有命名,我如何获得的值! 所以你能给出一个想法,

  • 问题内容: 我正在编写一个小型游戏,其中一个JFrame负责主游戏,另一个JFrame负责显示得分。问题是,当我完成构建它们时,分数JFrame总是最终集中精力!我试过调用scoreDisplay.toFront(),scoreDisplay.requestFocus(),甚至: 有什么办法可以使这项工作吗?预先感谢,约翰·穆拉诺 问题答案: 您是否考虑过将得分设置在与游戏框架相同的框架中? 其他

  • 问题内容: 我正在尝试使用React refs在安装时聚焦Redux-Form字段。 当我尝试时,会抛出一个错误: 当我console.log this.refs时,它通常是一个空对象,有时将’title’标识为ref,但它不是可靠的。 我是否正确使用了引用?我的代码在下面供参考。 … 问题答案: 请尝试使用回调函数设置ref: 然后使用它来获取基础的DOM节点: DOM输入元素是否包装在另一个元

  • 我正试图弄清楚如何使用Spring Batch进行聚合。例如,我有一个带有姓名列表的CSV文件: 我想要文本文件中的姓名计数: 根据我从Spring Batch中学到的,ETL批处理过程(itemReader- Spring Batch是正确的工具吗?还是我应该用Spark?谢谢

  • 问题内容: 我需要将注意力集中在指定的窗口上,而我头上看到的唯一方法是将其前面的所有窗口最小化,直到找到正确的窗口为止。 我该怎么做? Windows 7,没有特定的工具包…。 每种类型的窗口,例如,firefox和控制台命令 问题答案: 您需要通过窗口枚举并匹配窗口标题才能获得所需的窗口。下面的代码搜索标题为“ firefox”的窗口并设置焦点: 为了最小化窗口,下面的行: