react useState useEffect useMemo实际业务场景中的使用

这篇具有很好参考价值的文章主要介绍了react useState useEffect useMemo实际业务场景中的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

react useState useEffect useMemo实际业务场景中的使用,react.js,react.js,javascript,前端
下面的代码实现了上面图片的功能文章来源地址https://www.toymoban.com/news/detail-590509.html

import React, { useMemo } from "react";
import "./HomeHead.less";
import Img from "../assets/images/timg.jpg";

const HomeHead = function HomeHead(props) {
  { /*父组件传过来的值 */}
    let { today } = props;
  { /*处理时间缓存在状态未改变时是否走暖存,useMemo和vue中计算属性功能类似*/ }

  { /*用useMemo,只有在today变化时,才重新执行time函数,而在更新组件HomeHead时,today未改变,则不执行time函数, today的值走的是缓存和vue的计算属性原理一样*/}
  let time = useMemo(() => {
    //过滤处理时间格式*
    // console.log('@', today.match(/^\d{4}(\d{2})(\d{2})$/))
    let [, month, day] = today.match(/^\d{4}(\d{2})(\d{2})$/);
    let area = [
      "",
      "一",
      "二",
      "三",
      "四",
      "五",
      "六",
      "七",
      "八",
      "九",
      "十",
      "十一",
      "十二",
    ];
    return {
      day,
      month: area[+month] + "月",
    };
  }, [today]);

  return (
    <header className="home-head-box">
      {/*头部左边 */}
      <div className="info">
        <div className="time">
          <span>{time.day}</span>
          <span>{time.month}</span>
        </div>
        <h2 className="title">海鸥移动端博客</h2>
      </div>
      {/*头部右边 */}
      <div className="pictture">
        <img src={Img} alt="头像" />
      </div>
    </header>
  );
};

export default HomeHead;

import React, { useState, useEffect } from "react";
import HomeHead from "../components/HomeHead";
import _ from "../assets/utils"; //  工具函数库,处理时间 formatTime函数
import { Swiper } from "antd-mobile"; // UI组件
import { Link } from "react-router-dom";
import "./Home.less";
import api from "../api";

const Home = () => {
  //创建时间状态 ,_.formatTime(null,'{0}{1}{2}{4}:{5}')当前时间作为初始时间值
  let [today, setToday] = useState(_.formatTime(null, "{0}{1}{2}"));
  // console.log(_.formatTime(null,'{0}{1}{2}{4}:{5}'));

  // 轮播图数据
  let [bannerData, setBannerData] = useState([]);
  // 第一次渲染完毕,请求后台数据,useEffect不能用async修饰,所有里面包一层使用立马执行函数
  useEffect(() => {
    (async () => {
      try {
        // const newData = await api.queryNewsLatest();
        // console.log(newData);
        let { date, stories, top_stories } = await api.queryNewsLatest();
        // 更新时间日期
        setToday(date);
        // 更新bannerData状态
        setBannerData(top_stories);
      } catch (_) {}
    })();
  }, []);

  return (
    <div className="home-box">
      {/*today抓给子组件,头部组件*/}
      <HomeHead today={today} />
      {/*轮播图*/}
      <Swiper autoplay={true} loop={true} className="swiper-box">
        {bannerData.length > 0
          ? bannerData.map((item) => {
              let { image, id, hint, title } = item;
              return (
                <Swiper.Item key={id}>
                  <Link
                    to={{
                      pathname: `/detail/${id}`,
                    }}
                  >
                    <img src={image} alt="" />
                    <div className="desc">
                      <h3 className="title">{hint}邓紫棋</h3>
                      <p className="author">{title}邓紫棋牛逼</p>
                    </div>
                  </Link>
                </Swiper.Item>
              );
            })
          : null}
      </Swiper>
       {/*列表*/}
    </div>
  );
};
export default Home;

到了这里,关于react useState useEffect useMemo实际业务场景中的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React useMemo 实际开发使用小结

    useMemo 的原理是基于 memoization 技术。当你使用 useMemo 时,它会在组件渲染过程中缓存函数的计算结果,并在下一次渲染时,仅在依赖项(dependencies)发生变化时重新计算。如果依赖项没有发生变化,则直接返回之前缓存的结果,避免不必要的重复计算。 在组件初次渲染时,

    2024年02月16日
    浏览(31)
  • 【1024用代码改变世界】useMemo 和 useCallback|React.memo使用场景

    欢迎来到我的博客 📔博主是一名大学在读本科生,主要学习方向是前端。 🍭目前已经更新了 【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏 🛠目前正在学习的是🔥 R e a c t / 小程序 React/小程序 R e a c t / 小程序 🔥,中间穿插了一些基础知识的回顾 🌈博客主

    2024年02月02日
    浏览(35)
  • react中的useState和useImmer的用法

    react中文官网教程 在函数式组件中,可以使用 useState 这个 Hook 来定义和管理组件的状态。 useState 接受一个初始状态作为参数,并返回一个包含 state 和更新 state 的方法的数组。 下面是一个例子,展示了如何在函数式组件中定义自己的 state: 在上面的例子中,我们使用 useStat

    2024年02月07日
    浏览(37)
  • SQL与NoSQL数据库选型及实际业务场景探讨

    在企业系统架构设计中,选择合适的数据库类型是一项关键决策。本文将对比SQL和NoSQL数据库的特点,分析它们在数据模型、可扩展性、一致性与事务、查询复杂性与频率,以及性能与延迟等方面的优势和劣势。同时,结合轻易云数据集成平台作为实际业务场景的例子,探讨

    2024年02月15日
    浏览(93)
  • react中使用redux,但是通过useEffect监听不到redux中的数据变化?

    在React中使用Redux并通过useEffect监听Redux中的数据变化时,需要使用 react-redux 库中的 useSelector 钩子来选择需要监听的Redux状态。 useSelector 函数允许您从Redux存储中选择和获取特定的状态。 以下是一种在React组件中使用Redux,并通过useEffect监听Redux中的数据变化的常见方法: 首先

    2024年02月16日
    浏览(39)
  • 实际开发中常用的设计模式--------策略模式(知识跟业务场景结合)-----小白也能看懂(通俗易懂版本)

    1.策略模式定义: 策略模式是一种行为型设计模式,它允许在运行时动态地改变对象的行为。策略模式将将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换从而使得算法的变化不会影响到客户端 2.简单的策略模式示例代码: 在上述代码中,SortStra

    2024年02月13日
    浏览(40)
  • 实际开发中常用的设计模式--------单例模式(知识跟业务场景结合)-----小白也能看懂(通俗易懂版本)

    1.定义 单例模式是一种创建型设计模式,它通过使用私有构造函数和静态方法来确保一个类只有一个实例,并且提供全局访问点来获取该实例。 通过使用单例模式,我们可以方便地管理全局唯一的对象实例,并且避免了多次创建相同类型的对象所带来的资源浪费问题 2.业务场

    2024年02月12日
    浏览(33)
  • Flutter系列文章-Flutter在实际业务中的应用

    1. 跨平台开发: 在移动应用开发中,面对不同的平台(iOS和Android),我们通常需要编写两套不同的代码。而Flutter通过一套代码可以构建适用于多个平台的应用,大大提高了开发效率,降低了维护成本。 2. 混合开发: 在一些已有的原生应用中,引入Flutter可以用于开发某些特

    2024年02月11日
    浏览(30)
  • useMemo和useCallback使用场景

    useMemo到底是做什么的,工作原理是什么。 简而言之,useMemo是用来缓存 计算属性 的。 计算属性其实是函数的返回值,或者说指那些以返回一个值为目标的函数。 有些函数,需要我们手动的去点击,去完成一些动作才触发。而有些函数,则是直接在渲染的时候就执行,在DO

    2024年02月15日
    浏览(30)
  • React中useMemo的简单使用

    useMemo主要用来解决使用React hooks产生的无用渲染的性能问题,用来做缓存用。 useMemo使用场景,比如有两个变量(依赖项),只需要在其中一个变量变化时发生变化,否则拿缓存的值;或者其中另一个变量的变化不需要引起重新计算时使用。该属性类似于vue中的计算属性,有

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包