首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onDoubleClick没有对调用函数作出反应。

onDoubleClick没有对调用函数作出反应。
EN

Stack Overflow用户
提问于 2021-12-20 14:11:55
回答 2查看 804关注 0票数 0

我在这里遵循这个反应教程:https://ibaslogic.com/how-to-edit-todos-items-in-react/来构建一个简单的应用程序。

我还回顾了Why onDoubleClick event is not working in React.js?,但在我的示例中没有需要担心的onclick事件。

我的onDoubleClick事件应该调用一个函数handleEditing,但是当我双击列表项时不会发生任何事情。

我不知道为什么它不工作(网页浏览器似乎没有注册双击事件。

以下是我的例子:

代码语言:javascript
复制
import React from "react";
import styles from "./TodoItem.module.css";

class TodoItem extends React.Component {
  state = {
    editing: false,
  };

  handleEditing = () => {
      console.log("doubleClick")
    this.setState({
      editing: true,
    });
  };

  render() {

    const completedStyle = {
      fontStyle: "italic",
      color: "#595959",
      opacity: 0.4,
      textDecoration: "line-through",
    };
    
    const { completed, id, title } = this.props.todo;
    
    let viewMode = {}
let editMode = {}

if (this.state.editing) {
  viewMode.display = "none"
} else {
  editMode.display = "none"
}
    
    return (
      <li className={styles.item}>
        <div onDoubleClick={this.handleEditing} style={viewMode}>
          <input
            type="checkbox"
            className={styles.checkbox}
            checked={completed}
            onChange={() => this.props.handleChangeProps(id)}
          />
          <button onClick={() => this.props.deleteTodoProps(id)}>Delete</button>
          <span style={completed ? completedStyle : null}>{title}</span>
        
        </div>
        <input type="text" style={editMode} className={styles.textInput} />
      </li>
    );
  }
}

export default TodoItem;

我认为这与此无关,但这里是我的css:

代码语言:javascript
复制
.item {
    font-size: 1.2rem;
    list-style-type: none;
    padding: 17px 0px;
    border-bottom: 1px solid #eaeaea;
  }
  
  .checkbox {
    margin-right: 15px;
  }
  
  .item button {
    font-size: 13px;
    background: #f1f3f4;
    border: none;
    cursor: pointer;
    float: right;
    outline: none;
    border-radius: 100px;
    height: 50px;
    width: 50px;
    margin: -10px 0 0 10px;
  }


  .textInput {
    width: 100%;
    padding: 10px;
    border: 1px solid #dfdfdf;
  }
EN

回答 2

Stack Overflow用户

发布于 2022-08-16 15:29:57

当开发工具未打开时,onDoubleClick可以工作。

票数 3
EN

Stack Overflow用户

发布于 2021-12-20 14:22:10

最新答案:

正如评论中所发现的,问题是操作系统和浏览器的结合。在本例中,Windows / Chrome。

旧答案:

我还没有详细阅读,但我发现的第一个不同之处是,在您的代码中,handleEditing是不绑定的。这不应阻止console.log的输出。它会出现吗?

代码语言:javascript
复制
onDoubleClick={this.handleEditing.bind(this)}

希望这对你的案子有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70423109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档