【发布时间】:2021-03-31 21:36:33
【问题描述】:
我正在尝试将事件侦听器添加到 Autodesk Forge 查看器。这是一个基于 React 构建的应用程序,这是我正在尝试的代码:
const selectEvent = () => {
let viewer = window.NOP_VIEWER;
viewer.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, (e) => {
setSelection(e.dbIdArray);
});
};
当从按钮onClick 调用时,它可以完美运行:
<Button onClick={() => selectEvent()}>Add</Button>
但是,我希望在页面加载时打开事件监听器,所以我尝试了useEffect:
useEffect(() => {
let viewer = window.NOP_VIEWER;
if (viewer) {
selectEvent();
}
}, []);
即使尝试了一些修改,我也无法让它工作。什么都没有发生,所以我怀疑事件监听器永远不会被添加。环顾其他解决方案,事件侦听器通常加载useEffect,但我不确定我做错了什么。任何提示将不胜感激!
编辑:它确实输入了if 语句,因为console.log 有效
一些背景(可能相关):
查看器是从 useEffect 加载的
useEffect(() => {
initializeViewer(props);
}, []);
并且可以如上面代码所示访问查看器。
【问题讨论】:
标签: javascript reactjs react-hooks autodesk-forge