Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 从Jquery树事件设置React Props和state_Asp.net Mvc_Reactjs - Fatal编程技术网

Asp.net mvc 从Jquery树事件设置React Props和state

Asp.net mvc 从Jquery树事件设置React Props和state,asp.net-mvc,reactjs,Asp.net Mvc,Reactjs,我对这个世界还不熟悉。在我的项目中,现在我开始在现有的.NETMVC项目中使用react。我现在面临的问题是,我有一个基于Jquery/JS的树,它是从react类组件的ComponentDidMount填充的。这个JS treethird party JS插件有一个on select事件,我需要从中设置该组件的状态和道具。我无法从JQuery树的select事件调用React组件的eventHandler。请帮忙 import React, { Component } from 'react'

我对这个世界还不熟悉。在我的项目中,现在我开始在现有的.NETMVC项目中使用react。我现在面临的问题是,我有一个基于Jquery/JS的树,它是从react类组件的ComponentDidMount填充的。这个JS treethird party JS插件有一个on select事件,我需要从中设置该组件的状态和道具。我无法从JQuery树的select事件调用React组件的eventHandler。请帮忙

import React, { Component } from 'react'

class ReportsTree extends React.Component {

    constructor(props) {
        super(props)

        this.handleTreeNodeSelect = this.handleTreeNodeSelect.bind(this);
    }



    componentDidMount() {
        var tree = this.loadReportsTree();

        tree.on('nodeDrop', function (e, id, parentId, orderNumber) {

            // console.log("ID : " + id + " Parent :" + parentId + " OrderNumber :" + orderNumber);

            if (parentId != undefined && parentId.indexOf('R') > -1) {
                return false;
            }
        });

        tree.on('nodeDataBound', function (e, node, id, record) {
            //console.log(record)
            if (record.parentid === null || record.parentid === '') {
                tree.expand(node);
            }
        });

        tree.on('select', function (e, node, id) {

            this.handleTreeNodeSelect(id); //THIS LOC IS NOT WORKING - Unable to find handleTreeNodeSelect event handler
        });
    }

    state = {

        id: ''

    }

    handleTreeNodeSelect = (_id) => {
        this.props.NodeTypeDetails(this.state.id = _id);
        this.setState(() => { return { id: _id } });
    };



    loadReportsTree() {

        var tree = $('#ssrTree').tree({
            uiLibrary: 'bootstrap',
            dataSource: '/GetReportItems',
            primaryKey: 'id',
            imageUrlField: 'imageUrl',
            dragAndDrop: true,

        });

        return tree;



    }



    render() {
        return (<div className="reportsTreeContainer">
            <div id="ssrTree"></div>           
        </div>)
    }
}

export default ReportsTree

我认为不建议混合使用react和jquery。但这对你来说是必须的,然后你可以像这样改变你的组件

componentDidMount() {
    const self = this;
    var tree = self.loadReportsTree();
    ...
    tree.on('select', function (e, node, id) {

        self.handleTreeNodeSelect(id); // the difference is to use self instead of this
    });
}

这里的关键是保存对您的this的引用,这是一个原始的react组件,然后在您的事件处理程序onSelect上,它可以具有预期的this。

树。在“选择”上,this.handlegreenodeselect


我从树中传递事件处理程序,以进行如上所述的反应。对不起,伙计们,我之前没试过

我自己解决了这个问题,我替换了事件处理程序树;谢谢你的评论。我尝试了此-0树。在“选择”上,此.handleTreeNodeSelect;,你找到了一个解决办法,真是太好了