我正在寻找一种方法来确定我在 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/