react01 事件

1、准备工作

官网:React 官方中文文档

工程目录:D:\reactClass

创建工程:npx create-react-app react-2021-2

镜像地址:npm config set registry https://registry.npmmirror.com

2、课堂练习

题目:

组件化开发
默认div是灰色背景,图片是不激活的状态
点击图片,变成激活的状态(图片加个黄色框),背景变成粉色
点击图片外,图片变成非激活状态

知识:事件冒泡(快速理解)-CSDN博客


目录:

App.js

import { useState } from "react";
import yibo from "./assets/yibo.jpg";
import "./App.css";
import useClass from "./hooks/use-class";
// 组件化开发
// 默认div是灰色背景,图片是不激活的状态
// 点击图片,变成激活的状态(图片加个黄色的框),背景变为粉色
// 点击图片外,图片变成非激活状态

const App = () => {
  const { boxClass, imgClass, handleBox, handleImg} = useClass();

  return (
    <div onClick={handleBox} className={boxClass}>
      <img
        className={imgClass}
        onClick={handleImg}
        style={{
          width: 230,
          height: 200,
        }}
        src={yibo}
      />
    </div>
  );
};

export default App;

use-class.js

import { useState } from "react";
const useClass = () => {
  const [isActive, setIsActive] = useState(true);
  const handleImg = (e) => {
    e.stopPropagation(); //阻止事件冒泡
    setIsActive(true);
  };
  const handleBox = () => setIsActive(false);
  const imgClass = isActive ? "active" : "";
  const boxClass = isActive ? "box" : "box boxActive";

  return {
    imgClass,
    boxClass,
    handleImg,
    handleBox,
  };
};

export default useClass;
App.css

.box{
    width: 600px;
    height: 500px;
    background-color: pink;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0 auto;
}

.boxActive {
    background-color: #ccc;
}

.active {
    border: 2px solid yellow;
}

5、效果展示

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值