react实现点击变色小功能

本文探讨了两种在React中动态改变元素样式的常见方法:通过添加或移除className以及直接修改style属性。方法一是利用className结合CSS类实现背景色变化,需要重新渲染组件;方法二是直接在style内设置条件样式,点击时即时更新背景色。这两种方式各有特点,适用于不同的场景。
摘要由CSDN通过智能技术生成

方法一:通过className添加类名的方式

当点击实现变色的时候,需要重新使用render函数进行渲染

<style>
    .isActive {
        background-color: red;
    }
</style>

<body>
    <div id="app">

    </div>
    <script type="text/babel">
        let arr = [1, 2, 3, 4];
        let num;
        let fun = () => {
            return arr.map((v, i) => {
                return <h1 key={i} onClick={() => {
                    num = i;
                    console.log(num)
                    render()//这里需要使用render函数重新渲染
                }} className={num == i ? "isActive" : ""}> {v}</h1 >;
            })
        }

        let render = () => ReactDOM.render(fun(), document.getElementById("app"))
        render()
    </script>

在这里插入图片描述

方法二:通过style直接修改样式的方式

 <div id="app">

    </div>
    <script type="text/babel">
        let arr = [1, 2, 3, 4];
        let num;
        let fun = () => {
            return arr.map((v, i) => {
                return <h1 key={i} onClick={() => {
                    num = i;
                    render()//
                }} style={{ backgroundColor: i == num ? "red" : "" }}> {v}</h1 >;
            })
        }

        let render = () => ReactDOM.render(fun(), document.getElementById("app"))
        render()
    </script>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现echarts的点击放大功能,可以使用echarts提供的事件处理方法。具体实现步骤如下: 1. 在react组件中引入echarts库,并初始化一个echarts实例: ```jsx import React, { useEffect, useRef } from 'react'; import echarts from 'echarts'; function Chart() { const chartRef = useRef(null); useEffect(() => { const chart = echarts.init(chartRef.current); // 在这里配置echarts图表的数据和样式 chart.setOption({...}); }, []); return <div ref={chartRef} style={{ width: '100%', height: '500px' }}></div>; } ``` 2. 给echarts实例绑定click事件处理方法,用于放大缩小: ```jsx useEffect(() => { const chart = echarts.init(chartRef.current); // 在这里配置echarts图表的数据和样式 chart.setOption({...}); chart.on('click', (params) => { const zoom = chart.getOption().dataZoom[0]; const { startValue, endValue } = zoom; const zoomFactor = 0.1; // 缩放因子 if (params.componentType === 'dataZoom') { // 点击在dataZoom组件上,放大 const zoomStart = startValue + (endValue - startValue) * zoomFactor; const zoomEnd = endValue - (endValue - startValue) * zoomFactor; chart.dispatchAction({ type: 'dataZoom', startValue: zoomStart, endValue: zoomEnd, }); } else { // 点击在其他区域,缩小 const zoomStart = startValue - (endValue - startValue) * zoomFactor; const zoomEnd = endValue + (endValue - startValue) * zoomFactor; chart.dispatchAction({ type: 'dataZoom', startValue: Math.max(zoomStart, 0), endValue: Math.min(zoomEnd, 100), }); } }); }, []); ``` 3. 在echarts图表中添加dataZoom组件: ```jsx useEffect(() => { const chart = echarts.init(chartRef.current); // 在这里配置echarts图表的数据和样式 chart.setOption({ ..., dataZoom: [ { type: 'inside', start: 0, end: 100, }, ], }); ... }, []); ``` 这样就可以在echarts图表中实现点击缩放的功能了。点击在dataZoom组件上时放大,点击在其他区域时缩小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值