Reactjs Can';不要点击我放在Forge查看器上的POI

Reactjs Can';不要点击我放在Forge查看器上的POI,reactjs,autodesk-forge,autodesk,Reactjs,Autodesk Forge,Autodesk,嗨,我试过一个有兴趣的forge viewer,想在上面加上iot。我的程序正在运行 这是我的代码poiExtension.js,这里我们有json(x,y,z)调用的所有poi: 这是我的poiList.js(右边的可点击列表): import React,{Component}来自'React'; 导入“./poiList.css”; //沉着的反应坚定地表达了内心深处的感受 //这是一个联合公报,也是一个延伸 类PoiList扩展组件{ 建造师(道具){ 超级(道具); 此.state=

嗨,我试过一个有兴趣的forge viewer,想在上面加上iot。我的程序正在运行

这是我的代码poiExtension.js,这里我们有json(x,y,z)调用的所有poi:

这是我的poiList.js(右边的可点击列表):

import React,{Component}来自'React';
导入“./poiList.css”;
//沉着的反应坚定地表达了内心深处的感受
//这是一个联合公报,也是一个延伸
类PoiList扩展组件{
建造师(道具){
超级(道具);
此.state={
poi:[],
selectedPoi:未定义,
设置:{
defaultPointColor:[61183255],
selectedPointColor:[37,27,255],
DefaultPointTransparance:0.4,
spriteScaleFactor:0.8,
/海拔高度
精神状态:15.0
}
}; 
}
componentDidMount(){
获取(“/settings”)
。然后(响应=>{
如果(!response.ok){
log(`status${response.status}`);
抛出新错误(`status${response.status}`);
}
返回response.json();
})
。然后(json=>{
这是我的国家({
设置:json
});               
})
.catch(e=>{
log(`Settings call failed:${e}`);
这是我的国家({
消息:`设置调用失败:${e}`
});
})
获取('/poi')
。然后(响应=>{
如果(!response.ok){
log(`status${response.status}`);
抛出新错误(`status${response.status}`);
}
返回response.json();
})
。然后(json=>{
这是我的国家({
poi:json.poi
});               
})
.catch(e=>{
log(`POI调用失败:${e}`);
这是我的国家({
消息:`POI调用失败:${e}`
});
});
}
render(){
if(this.props.poiExtension!==未定义){
this.props.poiExtension.clearAllPOI();
this.props.poiExtension.setSettings(this.state.settings);
}
让自我=这个;
设poiList=[];
设指数=0;
this.state.poi.map((poi)=>{
if(this.props.poiExtension!==未定义){
this.props.poiExtension.createPOI(poi,this.state.selectedPoi==poi);
}
让colorState=索引%2==1?“浅灰色”:“;
colorState=this.state.selectedPoi===poi?“选定”:colorState;
让classC=“poiEntry”+颜色状态;
设项目=(
{
自我状态({
选择poi:poi,
});
}}>
{poi.type}({poi.x},{poi.y},{poi.z})
);
索引++;
poiList.push(poitem);
})
返回(
巴蒂门特E17酒店
{poiList}
);
}
}
导出默认列表;

我不知道怎么做……如果有人能帮我,我会很高兴:)

看起来你的问题与Forge或Viewer.js没有关系,但是

如果您所说的“不能点击POI”是指当您点击POI的DIV时,什么都没有发生(没有突出显示),那么重新编辑序列化您的状态,这样您测试当前
selectedPOI
是否被选中的方式就不起作用了-使用可序列化键(ID字符串等)来识别您的POI:

colorState = this.state.selectedPoi.id === poi.id ? "selected" : colorState;
    import React, { Component } from 'react';
import './poiList.css';

// Composant react affichant la liste des points d'intérêts
// C'est ce composant qui communique avec l'extension POI
class PoiList extends Component {
    constructor(props) {
        super(props);
        this.state = {
            poi: [],
            selectedPoi: undefined,
            settings: {
                defaultPointColor: [61, 183, 255],
                selectedPointColor: [37, 27, 255],
                defaultPointTransparancy: 0.4,
                spriteScaleFactor: 0.8,
                //altitude par défaut
                spriteAltitude: 15.0
            }
        }; 
    }

    componentDidMount() {                
        fetch('/settings')
            .then(response => {
                if (!response.ok) {
                    console.log(`status ${response.status}`);
                    throw new Error(`status ${response.status}`);
                }
                return response.json();
            })
            .then(json => {
                this.setState({
                    settings: json
                });               

            })
            .catch(e => {
                console.log(`Settings call failed: ${e}`);
                this.setState({
                    message: `Settings call failed: ${e}`
                });
            })
        fetch('/poi')
            .then(response => {
                if (!response.ok) {
                    console.log(`status ${response.status}`);
                    throw new Error(`status ${response.status}`);
                }
                return response.json();
            })
            .then(json => {
                this.setState({
                    poi: json.poi
                });               

            })
            .catch(e => {
                console.log(`POI call failed: ${e}`);
                this.setState({
                    message: `POI call failed: ${e}`
                });
            });
    }

    render() {
        if(this.props.poiExtension !== undefined) {
            this.props.poiExtension.clearAllPOI();
            this.props.poiExtension.setSettings(this.state.settings);
        }
        let self = this;
        let poiList = [];
        let index = 0;
        this.state.poi.map((poi) => {
            if(this.props.poiExtension !== undefined) {
                this.props.poiExtension.createPOI(poi, this.state.selectedPoi === poi);
            }
            let colorState = index % 2 === 1 ? "lightgrey" : "";
            colorState = this.state.selectedPoi === poi ? "selected" : colorState;
            let classC = "poiEntry " + colorState;
            let poiItem = (
                <div className={classC} key={index} onClick={() => {
                    self.setState({
                        selectedPoi: poi,
                    });
                }}>
                    {poi.type} ({poi.x}, {poi.y}, {poi.z})
                </div>
            );
            index++;

            poiList.push(poiItem);
        })

        return(
            <div className="fullscreen">
                <div className="poiTitle">BATIMENT E17</div>
                <div className="poiList">
                    { poiList }
                </div>
            </div>
        );
    }
}

export default PoiList;
colorState = this.state.selectedPoi.id === poi.id ? "selected" : colorState;