当前位置: 首页 > wzjs >正文

学校网站信息化建设工作心得wordpress微信公众号推送

学校网站信息化建设工作心得,wordpress微信公众号推送,潍坊网站模板建站,海珠网站建设制作一、场景描述 我想写一个轮播图的程序,只是把bootstrap里面的轮播图拉过来就用上感觉不是很合适,然后我就想自己写自动轮播,因此,这篇文章里面只是自动轮播的部分,没有按键跟自动轮播的衔接部分。 Ps: 本文用的是函数…

一、场景描述

我想写一个轮播图的程序,只是把bootstrap里面的轮播图拉过来就用上感觉不是很合适,然后我就想自己写自动轮播,因此,这篇文章里面只是自动轮播的部分,没有按键跟自动轮播的衔接部分。
Ps: 本文用的是函数式组件,因为新版本的react函数式组件用的比较多。

二、相关知识

2.1 怎么在react.js中使用bootstrap

首先,在react中引入bootstrap。

npm install bootstrap

然后在index.js中引入bootstrap,在后续组件中使用bootstrap的时候就不需要再引入。
需要同时引入css文件和js文件。

import "bootstrap/dist/css/bootstrap.min.css";
import "bootstrap/dist/js/bootstrap";

2.2 useEffect钩子

useEffect钩子是在渲染之后运行的程序。有一个作用是:根据React state控制非React组件。
在部分的内容中有三种写的方式:

  useEffect(() => {//代码// eslint-disable-next-line react-hooks/exhaustive-deps}, []);   //后面的依赖数据是空的,就是只在第一次渲染的时候运行useEffect(() => {//代码// eslint-disable-next-line react-hooks/exhaustive-deps});    //后面没有依赖,每次渲染的时候都会运行useEffect(() => {//代码// eslint-disable-next-line react-hooks/exhaustive-deps},[img]);    //后面的依赖是img就只在img改变的时候再运行

2.3useRef钩子

ref和state之间的区别在于state变化之后组件会重新渲染,ref变化之后组件不会重新渲染。ref在整个组件生命周期内保持不变。

import { useRef } from "react”;let currentIndex1 = useRef(0); //定义ref
//html中代码
<button onClick={() => {console.log(currentIndex1.current);currentIndex1.current = currentIndex1.current + 1;
}}>+1</button>

三、轮播图的自动播放功能实现

这部分分为两个问题,一个是自动播放的index,自动播放就是定时器interval;另一个是通过class类定义当前显示的图片,然后设置动画。
这里定义index只能是state,因为ref变化不会渲染,这样根据index改变的class类可能就改变不了。
思路如下图所示。
在这里插入图片描述
整体代码如下:
Recommend.tsx

import { useRef } from "react";
import React, { useEffect, useState } from "react";
import hyRequest from "../../service/index";
const Recommend = function () {const [img, setImg] = useState<any[]>([]);let currentIndex1 = useRef(0);const [currentIndex, setCurrentIndex] = useState(0);useEffect(() => {hyRequest.get({ url: "/banner" }).then((res) => {console.log(res);setImg(res.banners);console.log(img);});// eslint-disable-next-line react-hooks/exhaustive-deps}, []);useEffect(() => {console.log("设置定时器");const interval = setInterval(() => {//console.log(img, img.length);//currentIndex.current = (currentIndex.current + 1) % img.length;//console.log(currentIndex.current);setCurrentIndex((preCurrentIndex) => (preCurrentIndex + 1) % img.length);}, 3000);return () => clearInterval(interval); // 清除定时器// eslint-disable-next-line react-hooks/exhaustive-deps}, [img]);return (<div><h2>推荐</h2><div id="carouselExample" className="carousel slide"><div className="carousel-inner">{img.map((item, index) => {//console.log(currentIndex, item, index);return (<divkey={index}className={`carousel-item ${index === currentIndex ? "active" : ""} ${index === currentIndex - 1 ? "preActive" : ""} ${index === currentIndex + 1 ? "nextActive" : ""}`}><img src={item.imageUrl} className="d-block w-100" alt="..." /></div>);})}</div><buttonclassName="carousel-control-prev"type="button"data-bs-target="#carouselExample"data-bs-slide="prev"><spanclassName="carousel-control-prev-icon"aria-hidden="true"></span><span className="visually-hidden">Previous</span></button><buttonclassName="carousel-control-next"type="button"data-bs-target="#carouselExample"data-bs-slide="next"><spanclassName="carousel-control-next-icon"aria-hidden="true"></span><span className="visually-hidden">Next</span></button></div><div>{currentIndex1.current}</div><buttononClick={() => {console.log(currentIndex1.current);currentIndex1.current = currentIndex1.current + 1;}}>+1</button></div>);
};export default Recommend;

index.less

.nextActive {display: block !important;transform: translateX(100%);opacity: 0;
}
.active {transform: none;opacity: 1;
}
.preActive {display: block !important;transform: translateX(-100%);opacity: 0;
}

文章转载自:

http://yCsOGAj4.zLnkq.cn
http://l9eEw6cM.zLnkq.cn
http://RgNuaNTQ.zLnkq.cn
http://AvSQ7fA2.zLnkq.cn
http://P84CHGGY.zLnkq.cn
http://1zlaGIhw.zLnkq.cn
http://R41iZ9U3.zLnkq.cn
http://0fV2WRNH.zLnkq.cn
http://qneweGx1.zLnkq.cn
http://K6DAvoYA.zLnkq.cn
http://BBBeuZuu.zLnkq.cn
http://cQl9I2yC.zLnkq.cn
http://tSLhxKgv.zLnkq.cn
http://LfyM78UI.zLnkq.cn
http://Fa4NzBzS.zLnkq.cn
http://9YidsM9v.zLnkq.cn
http://hHM0yR0K.zLnkq.cn
http://OuQ5cSc2.zLnkq.cn
http://YnRcU4qs.zLnkq.cn
http://doiK9gsP.zLnkq.cn
http://H9tgNGVU.zLnkq.cn
http://huUDdOe2.zLnkq.cn
http://5HFtIFQW.zLnkq.cn
http://KyHRsZL3.zLnkq.cn
http://20IXKZbc.zLnkq.cn
http://TX0r4Yxf.zLnkq.cn
http://ZEiTgVPv.zLnkq.cn
http://IU15eHHd.zLnkq.cn
http://5wzCeZu7.zLnkq.cn
http://avIJOGeS.zLnkq.cn
http://www.dtcms.com/wzjs/632737.html

相关文章:

  • 佛山做外贸网站的公司吗浏览器打不开二级网页
  • 网站交易网学什么可以做视频网站
  • 公司网站建设方案书例文网站开发主题
  • 如何快速找到公司网站wordpress the_excerpt();
  • mip网站建设谷歌海外广告投放推广
  • 模版网站建设惠州市惠城区建设局网站
  • 建设垂直网站需要哪些流程平台类网站开发
  • 单页网站是什么wordpress怎么删除预建网站
  • 个人网站多少钱wordpress 说说碎语
  • 网站建设流程教程成都网站制作长沙
  • 深圳做网站的好公司企业网站推广的方法有( )
  • 中国最厉害的网站建设公司百度大数据分析工具
  • h5网站建设文章深度网络技术
  • 网站平台系统设计公司网站建设方案申请
  • 网站安全建设申请天津专业的做网站与运营的公司
  • 哪家专门做特卖的网站高校后勤网站建设
  • 京东联盟网站怎么做网站建设 提案 框架
  • 网站如何开发触屏版阿泰勒北京网站建设
  • 常用于做网站的软件核酸检测利润6700亿
  • 网站地图制作网站建设 招标资质要求
  • 定州做网站广州安尔捷做的网站好吗
  • 廊坊网站排名优化报价手机如何制作软件app
  • 普洱做网站的报价现在清算组备案在哪个网站做
  • 企业网站的常见类型有什么青岛网站域名备案
  • 建网站用html用c3做的动画网站
  • 网站建设用到的算法斯皮尔网站建设
  • 网站搜索引擎优化的方法seo在中国
  • 南昌网站建设哪家最好白酒 网站模板
  • 百度网站验证wordpress显示错乱
  • 建设工程人员锁定网站豆瓣wordpress主题