码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 第39节——useInsertionEffect——了解


    一、回顾css in js

    CSS-in-JS (后文简称为 CIJ)在 2014 年由 Facebook 的员工 在 NationJS 会议上提出:可以借用 JS 解决许多 CSS 本身的一些“缺陷”,比如全局作用域、死代码移除、生效顺序依赖于样式加载顺序、常量共享等等问题。

    CSS IN JS 的具体实现有 50 多种,比如:React常用(CSS Modules、styled-components)、 Vue常用(

    二、useInsertionEffect

    这个钩子与其他钩子略有不同,因为它的唯一目的是对CSS-in-JS库很重要,这些库在运行中生成新的规则并在文档中插入

    在某些情况下,

    这实际上意味着CSS规则必须在React渲染时针对每一帧的所有DOM节点进行重新计算。虽然你很有可能不会遇到这个问题,但它的扩展性并不好。

    为了解决这个问题,React团队引入了useInsertionEffect Hook。它与useLayoutEffect Hook非常相似,但它不能访问DOM节点的引用。

    这意味着它只能用于插入样式规则。它的主要用途是插入全局DOM节点,如

    import { useLayoutEffect } from "react";
    import { useEffect, useInsertionEffect, useRef } from "react";
    function getStyleForRule(rule) {
      let style = document.createElement("style");
      style.innerHTML = rule;
      return style;
    }
    
    function useCSS(rule) {
      useInsertionEffect(() => {
        console.log("每次渲染前")
        // 插入style标签
        document.head.appendChild(getStyleForRule(rule));
      });
      return rule;
    }
    
    export default function Component() {
      useLayoutEffect(() => {
        console.log("每次渲染后的同步班")
      })
      useEffect(() => {
        console.log("每次渲染后")
      })
      let className = useCSS(`.red{
        background-color:red;
    }`);
      return 
    哈哈哈
    ; }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
  • 相关阅读:
    LabVIEW专栏五、网口
    【Java集合类面试三十】、BlockingQueue中有哪些方法,为什么这样设计?
    我赢助手之引流篇:短视频私域、自有鱼塘背后的底层逻辑是什么?
    Ubuntu20.04安装0pen3d及ISPC失败解决方案
    【Spring Boot】使用XML配置文件实现数据库操作(一)
    C++思考和一些代码规范(09/28)
    CP2112使用USB转IIC通信教学示例
    ARM、x86 劲敌再度突袭:基于RISC-V 的首台笔记本将于今年面世
    Eureka细节详解
    Java“牵手”淘宝商品详情数据,淘宝商品详情接口,淘宝API接口申请指南介绍
  • 原文地址:https://blog.csdn.net/weixin_57017198/article/details/133241342
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号