javascript - 确定javascript中单击对象的类型

标签 javascript reactjs

我正在寻找一种方法来确定我在 JavaScript 中单击的类型对象。

我在 React(使用 PrimeReact - Tree View)中填充了一个类似于 TreeView 的 GUI 元素,其中包含来自 Rest 调用的 Json 对象。现在树的第一层来自ObjectA,第二层来自ObjectB。

当用户点击时,我不想引发ObjectA的事件,而只想引发ObjectB的事件,所以如果我用Java来做,我会做如下的事情

ClickedObject.isAssignable(ObjectB)

这会告诉我这是我感兴趣的对象的类型。

我尝试做类似的事情

ObjectB instanceof ClassB

但是当我从 JSon 构造对象时,我无法访问它的构造函数(或者有没有办法获取对象的构造函数)..

实现我想做的事情的最佳方法是什么?

最佳答案

class App extends React.Component {
  outer = (e) => {
    console.log('outer');
  } 

  inner = (e) => {
    e.stopPropagation();
    console.log('inner');
  }

  render() {
    return (
      <div onClick={this.outer}>
        Outer
        <div onClick={this.inner}>Inner</div>
      </div>
    )
  }
};

演示:https://codesandbox.io/s/j2j6x0lo6w

或者:

class App extends React.Component {
  click = (e) => {
    e.stopPropagation();
    console.log(e.target.id);
  }

  render() {
    return (
      <div id="outer" onClick={this.click}>
        Outer
        <div id="inner" onClick={this.click}>Inner</div>
      </div>
    )
  }
};

或者:

class App extends React.Component {
  click(id, e) {
    e.stopPropagation();
    console.log(id);
  }

  render() {
    return (
      <div onClick={(e) => this.click('outer', e)}>
        Outer
        <div onClick={(e) => this.click('inner', e)}>Inner</div>
      </div>
    )
  }
};

编辑

对于 PrimeReact Tree 组件,您可以执行对象引用相等性检查。例如:

onSelectionChange(e) {
  if (e.selection === data[1].children[2]) {
    console.log('Clicked the 3rd child of the second parent');
  }
}

关于javascript - 确定javascript中单击对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47162922/

相关文章:

php - 如何使用 JQuery 和 PHP?

javascript - 如何打开下载的文件?

javascript - 使用 Javascript 解析文本文件内容

javascript - 将 css 文件嵌入到内部 &lt;style&gt; 元素中

javascript - React 中的组件 css 类不会渲染到 DOM

javascript - ReactJS 如何实现显示更多按钮?

javascript - 将方法名称作为回调传递 VS。用匿名函数包装它

javascript - 如何在 Intl.NumberFormat 中格式化货币符号?

reactjs - 在 'default' 中找不到导出 'Three'(导入为 'three')

javascript - 一旦玩家经验增加 1,我的跨度就会不断消失