echarts(九) 高级篇(鼠标事件监听、组件交互事件监听、代码触发 ECharts 中组件的行为[信息高亮提示])

本文详细介绍了ECharts中如何使用on方法监听各种鼠标事件,如click、mouseover等,并展示了如何处理图例交互事件,如legendselectchanged。同时,通过dispatchAction方法触发ECharts组件的行为,如高亮、提示信息的显示与隐藏。文中还提供了具体的代码示例,演示了如何在图表中实现元素的高亮和提示信息的定时切换。
摘要由CSDN通过智能技术生成

高级篇

监听事件

  • ECharts 使用on 绑定事件,事件名称对应 DOM 事件名称,均为小写的字符串。如:
myChart.on('click', function (params) {
    // 控制台打印数据的名称
    console.log(params.name);
});

鼠标事件监听

  • ECharts 支持常规的鼠标事件类型,包括 ‘click’、‘dblclick’、‘mousedown’、‘mousemove’、‘mouseup’、‘mouseover’、‘mouseout’、‘globalout’、‘contextmenu’ 事件。
  • 所有的鼠标事件包含参数 params,如被点击的图形信息 params.componentType 。
const myChart = echarts.init(document.getElementById('main'));

//数据源
const source=[
    ['大前端','学习人数','就业人数'],
    ['html',  30,       50],
    ['css',   20,       40],
    ['js',    40,       80],
];
// 指定图表的配置项和数据
const option={
    tooltip:{},
    legend:{},
    dataset:{source},
    xAxis:{
        data:['html','css','js']
    },
    yAxis:{},
    series:[
        {type:'bar'},
        {type:'bar'},
    ]
};
myChart.setOption(option);

/*
* 使用on 方法绑定click点击事件
* */
myChart.on('click',function(opt){
    console.log(opt);
})

在这里插入图片描述

组件交互事件监听

  • 在 ECharts 中基本上所有的组件交互行为都会触发相应的事件。如图例开关的行为会触发 legendselectchanged 事件:
myChart.on('legendselectchanged', function (params) {
        // 获取点击图例的选中状态
        let isSelected = params.selected[params.name];
        // 在控制台中打印
        console.log((isSelected ? '选中了' : '取消选中了') + '图例' + params.name);
        // 打印所有图例的状态
        console.log(params.selected);
});

在这里插入图片描述

代码触发 ECharts 中组件的行为

  • ECharts 通过调用 echarts 实例对象的dispatchAction() 方法触发组件行为。如触发某个元素的highlight 高亮事件:
myChart.dispatchAction({
      type: 'highlight',
      seriesIndex: 0,
      dataIndex: app.currentIndex
});
  • type 触发的行为类型
    • highlight 高亮
    • showTip 显示提示
    • downplay 取消高亮
    • hideTip 取消提示
  • seriesIndex 系列索引,用于寻找系列列表中的某个系列
  • dataIndex 数据所有,用于寻找系列中的某个元素
使用dispatchAction 方法高亮并定时提示一个扇形信息
const myChart = echarts.init(document.getElementById('main'));
//数据源
const source=[
    ['html',  30],
    ['css',   20],
    ['js',    40],
    ['canvas',70],
];
//维度
const dimensions=['大前端','学习人数'];
// 指定图表的配置项和数据
const option = {
    title:{
        text:'前端语言学习人数'
    },
    tooltip:{},
    legend:{
        left:'left',
        orient:'vertical',
        top:40
    },
    dataset:{source,dimensions},
    series:{
        type:'pie',
        emphasis:{
            itemStyle:{
                shadowColor:'rgba(0,0,0,0.5)',
                shadowOffsetY:10,
                shadowBlur:10
            }
        }
    }
};
myChart.setOption(option);
/*使用dispatchAction 方法高亮并提示一个扇形
*   type 触发的行为类型
*       highlight 高亮
*       showTip 显示提示
*       downplay 取消高亮
*       hideTip 取消提示
*   seriesIndex 系列索引,用于寻找系列列表中的某个系列
*   dataIndex 数据所有,用于寻找系列中的某个元素
* */
myChart.dispatchAction({
    type:'highlight',
    seriesIndex:0,
    dataIndex:0
})
myChart.dispatchAction({
    type:'showTip',
    seriesIndex:0,
    dataIndex:0
})
/*myChart.dispatchAction({
    type:'downplay',
    seriesIndex:0,
    dataIndex:0
})
myChart.dispatchAction({
    type:'hideTip',
    seriesIndex:0,
    dataIndex:0
})*/
// 当前索引
let curInd=0;
/*获取系列数据的长度*/
const len=source.length;
/*建立时间监听器*/
setInterval(function(){
    myChart.dispatchAction({
        type:'downplay',
        seriesIndex:0,
        dataIndex:curInd
    });
    myChart.dispatchAction({
        type:'hideTip',
        seriesIndex:0,
        dataIndex:curInd
    });
    curInd++;
    if(curInd===len){
        curInd=0;
    }
    myChart.dispatchAction({
        type:'highlight',
        seriesIndex:0,
        dataIndex:curInd
    });
    myChart.dispatchAction({
        type:'showTip',
        seriesIndex:0,
        dataIndex:curInd
    });
},1500)
在 React ,子组件可以监听组件传递的事件触发。这可以通过以下步骤完成: 1. 在父组件定义事件处理函数,并将其作为 props 传递给子组件。例如,假设父组件有一个按钮,点击该按钮会触发一个名为 `handleEvent` 的事件处理函数。 2. 在子组件,使用 `props` 接收父组件传递的事件处理函数。例如,可以在子组件的构造函数使用 `props` 参数来接收该函数,然后将其保存在子组件的状态。 3. 在子组件,可以使用保存的事件处理函数来监听相应的事件。例如,在子组件的 `componentDidMount` 生命周期方法,可以使用 `addEventListener` 方法来监听特定的事件,并在事件触发时调用保存的事件处理函数。 下面是一个示例代码: ```javascript // 父组件 class ParentComponent extends React.Component { handleEvent = () => { // 处理事件的逻辑 } render() { return ( <div> <ChildComponent handleEvent={this.handleEvent} /> </div> ); } } // 子组件 class ChildComponent extends React.Component { constructor(props) { super(props); this.state = { handleEvent: props.handleEvent }; } componentDidMount() { // 监听事件 document.addEventListener('click', this.state.handleEvent); } componentWillUnmount() { // 移除事件监听 document.removeEventListener('click', this.state.handleEvent); } render() { return <div>子组件</div>; } } ``` 在上面的示例,父组件的 `handleEvent` 函数通过 props 传递给了子组件。子组件在构造函数接收并保存了该函数,并在 `componentDidMount` 生命周期方法使用 `addEventListener` 监听了 `click` 事件。当点击页面时,子组件触发组件传递的事件处理函数。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值