【日常记录】【JS】styled-components库的原理,模板字符串调用函数

文章目录

    • 1、引言
    • 2、模板字符串调用函数
    • 3、实现

1、引言

在react 中,styled-components 是最流行的 css in js 模式的库

在这里插入图片描述

2、模板字符串调用函数

    let stu = {
      name: '呆呆狗',
      age: 30,
      address: '中国'
    }
    let str = fn`你好${stu.name}今年${stu.age}岁,来自${stu.address}`

这样会报错

在这里插入图片描述

可以先定义一个 fn fn = '123' ,这个时候还是会报错,fn 不是一个函数,那就说明这样写其实时调用fn函数

在这里插入图片描述

    let stu = {
      name: '呆呆狗',
      age: 30,
      address: '中国'
    }
    function fn() {
      console.log(arguments);
      return '123'
    }
    let str = fn`你好${stu.name}今年${stu.age}岁,来自${stu.address}`
    console.log(str);

在这里插入图片描述

3、实现

在这里插入图片描述

    HTMLElement.prototype.styles = function () {
      console.log(arguments);
      let style = ''
      let key = Array.from(arguments)[0]
      let params = Array.from(arguments).slice(1)
      console.log(params, key);
      params.forEach((f, i) => {
        style += key[i] + f
      })
      console.log(style);
      this.style = style
    }
    let config = {
      styles: {
        color: 'red',
        fontSize: '20px',
        border: '1px solid green'
      }
    }
    let aEl = document.querySelector('a')
    aEl.styles`
      color:${config.styles.color};
      font-size: ${config.styles.fontSize};
      border: ${config.styles.border};
`

其实这要考虑其他的很多情况,比如 如果属性值不是 ${} 传入的呢,上面的代码只是大概的思路

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/547718.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySql 安装,小白也可以学会成功安装的保姆级教程

MySql 安装 文章目录 MySql 安装1.Mysql下载1.1 访问下载链接1.2 选择合适版本1.3 下载安装包 2.MySql安装3.安装成功检测验证3.1 mysql自带控制台验证3.2 win系统控制台进入验证 4. mysql 配置path5. navicat 连接 mysql 1.Mysql下载 1.1 访问下载链接 MySQL Downloads 这里…

计算机网络----第十六天

OSPF基础 RIP的缺陷: 最大16跳不可达; 收敛速度慢; 协议会产生路由自环 每发一次路由更新,就将自己的全部路由信息发送出去; OSPF: 含义:ospf(最短路径优先)&…

【Github】一个用于Active Directory的自助密码更改工具

在众多企业的日常运营中,Active Directory(AD)扮演着核心角色,负责管理和维护员工账户。然而,密码重置作为IT支持团队的常规工作之一,往往既耗时又繁琐。虽然一些商业解决方案和通过Windows服务器上RDS服务…

航芯通用MCU技术常见问题 | F4专题

日常工作中,我们的销售或技术工程师经常会收到来自用户的问题,其中一些问题是比较常见的,所以为满足日常用户对航芯产品使用及服务的了解,航芯特此推出“通用MCU技术常见问题”专题,分为F0专题及F4专题,欢迎…

内网穿透是什么意思?快解析如何实现内网穿透

在家里或者公司,我们常常会使用路由器来连接网络,以便我们能够上网学习和工作,但有时候使用起来真的不方便。有的时候我们在外面,想访问家里或者公司内部的设备,就会碰到一个问题:我们无法直接通过公网IP访…

【LeetCode: 3117. 划分数组得到最小的值之和 + 动态规划】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【C语言】<结构体>C中的自定义类型之struct

<结构体> 1. 结构体类型的声明1.1 结构体回顾1.1.1 结构体的声明1.1.2 结构体变量的创建和初始化 1.2 结构体的特殊声明1.3 结构体的自引用 2. 结构体内存对齐2.1 对齐规则2.2 为什么存在内存对齐?2.3 修改默认对齐数 3. 结构体传参4. 结构体…

SD-WAN提升企业网络体验

在现代企业中,网络体验已成为提升工作效率与业务质量的关键因素。SD-WAN技术的出现,以其独特的优势,为企业提供了优化网络连接、加速数据传输、提升服务质量和应用访问体验,以及增强网络稳定性的解决方案。接下来,我们…

Vue3(四):Pinia

一、Pinia介绍 Pinia是一个专门为Vue.js设计的状态管理库,它提供了一种简单和直观的方式来管理应用程序的状态。在使用Pinia时,可以轻松地创建定义状态的存储,然后将其与Vue组件绑定,使它们能够使用该状态。和上一个博客提到的Vu…

外网如何访问内网数据库?

在当今信息时代,随着互联网的快速发展,很多企业和个人都面临着外网访问内网数据库的需求。外网访问内网数据库可以实现远程操作,方便用户在任何地点使用移动设备进行数据管理和查询。本文将介绍一种名为【天联】的组网产品,它是一…

Sublime Text下载,安装,安装插件管理器,下载汉化插件

SublimeTest官网 © Sublime Text中文网 下载安装 一路点击安装即可 安装插件管理器 管理器官网安装 - 包控制 (packagecontrol.io) 手动安装将3 位置点击网址下载 再打开SublimeTest 点击 选择第一个Browse Packages..... 将会跳转到文件夹中 进入上一个文件夹 在进入…

使用剧本批量部署rsync服务端实战

目录 1、实战部署 编写剧本 执行剧本测试!!! 2、部署方式对比 1、实战部署 编写剧本 执行剧本测试!!! 2、部署方式对比 ansible模块实战-部署rsync服务端-CSDN博客 ansible临时命令和playbook区别 …

UE5 C++ TimeLine 时间轴练习

一. Actor引入头文件 #include "Components/TimelineComponent.h" 声明CurveFloat 和 TimelineComponent UPROPERTY(EditAnywhere,BlueprintReadWrite,Category "MyCurve")UCurveFloat* MyCurveFloat;UPROPERTY(EditAnywhere, BlueprintReadWrite, Cate…

北漂程序员整理:2024年阿里云服务器租用优惠价格表

阿里云服务器租用价格表2024年最新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元,ECS u1服务器2核4G5M固定带宽199元一年,2核4G4M带宽轻量服务器一年165元12个月,2核…

逻辑卷和磁盘配额

文章目录 一、逻辑卷二、磁盘配额 一、逻辑卷 为什么会出现技术? 分区的缺点: 没有备份功能无法扩容性能取决于硬盘本身 相关概念 LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理。它是 Linux 下对硬盘分区的一种管理机制。…

【深度学习】深度学习md笔记总结第5篇:神经网络与tf.keras,学习目标【附代码文档】

深度学习笔记完整教程(附代码资料)主要内容讲述:深度学习课程,深度学习介绍要求,目标,学习目标,1.1.1 区别,学习目标,学习目标。TensorFlow介绍,2.4 张量学习目标,2.4.1 张量(Tensor),2.4.2 创建张量的指令,2.4.3 张量…

OpenKylin设置root密码

前言 新安装的OpenKylin系统应该root用户没有设置密码,但是可以使用sudo -i 临时获取root权限,不影响正常使用 当前是root用户 1、终端输入passwd命令 passwd2、按照提示输入新密码和确认密码 当前非root用户 1、终端输入sudo passwd root 命令 s…

2022年电赛F题23年电赛D题-信号调制度测量装置说明中提到带通采样定律。

2022年电赛F题-信号调制度测量装置说明中提到带通采样定律。 23年电赛D题十分相似,但是22年载波达到了10M,根据奈奎斯特采样定理,我们知道想要分析出频谱不混叠的频谱图,采样率必须大于最大谐波的二倍。那么就意味着AD采样率要大…

【笔试训练】day2

文章目录 1.牛牛的快递代码: 2.最小花费爬楼梯思路:代码: 3.数组中两个字符串的最小距离思路:代码: 1.牛牛的快递 注意一个坑,首先就是加急是总共加5块,不是每千克加5块。 思路呃,没…

Java SpringBoot基于微信小程序的高速公路服务区充电桩在线预定系统,附源码

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…