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

news2024/11/25 13:32:07

文章目录

    • 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};
`

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高创新 | Matlab实现OOA-CNN-GRU-Attention鱼鹰算法优化卷积门控循环单元注意力机制多变量回归预测

高创新 | Matlab实现OOA-CNN-GRU-Attention鱼鹰算法优化卷积门控循环单元注意力机制多变量回归预测 目录 高创新 | Matlab实现OOA-CNN-GRU-Attention鱼鹰算法优化卷积门控循环单元注意力机制多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现OOA…

C语言 | Leetcode C语言题解之第22题括号生成

题目: 题解: // 回溯法求解 #define MAX_SIZE 1430 // 卡特兰数: 1, 1, 2, 5, 14, 42, 132, 429, 1430 void generate(int left, int right, int n, char *str, int index, char **result, int *returnSize) {if (index 2 * n) { // 当前长度已达2nre…

在 Keil 中使用 STM32CubeProgrammer

1. 前言 STM32 MCU 新产品的早期用户有时候会遇见工具链还在完善中的情形,例如,一部分STM32 工具已经支持该产品,而另外一部分 STM32 工具还在更新中。具体到 Keil 用户,用户有可能可以使用 STM32CubeProgrammer 进行下载&#x…

【C++进阶】C++异常详解

C异常 一,传统处理错误方式二,C处理的方式三,异常的概念四,异常的使用4.1 异常和捕获的匹配原则4.2 函数调用链中异常栈展开匹配原则4.3 异常的重新抛出(异常安全问题)4.4 RAII思想在异常中的作用 五&#…

【ROS2笔记一】ROS2的基本组件

1.ROS2的基本组件 与ROS1类似的,ROS2也具有node,topic,service,action之类的组件,并且也具有rqt等工具。 可以像使用ROS1的命令行的方式(参这里【ROS学习笔记7】ROS中的常用命令行)&#xff0…

Python机器学习学习线路

随着人工智能技术的飞速发展,机器学习已经成为计算机科学领域的热门话题。Python,作为一门功能强大且易于上手的编程语言,成为学习机器学习的理想选择。本文将为您介绍一条Python机器学习的学习线路,帮助您逐步掌握机器学习的基础…

小程序 SSL证书的重要性与选择

随着移动互联网的迅猛发展,微信小程序已成为众多企业和开发者连接用户的重要平台。然而,随之而来的是对数据安全和隐私保护的严峻挑战。在这一背景下,小程序SSL证书的作用变得尤为重要,它为小程序提供了一个安全的通信管道&#x…

神策PRO PCIe 5.0 SSD发布,光威白菜级定价,打破海外品牌价格壁垒

记得去年DDR5刚刚流行的时候,光威就推出了不少平民价位的DDR5内存产品,加速了DDR5内存的普及,最近光威再接再厉,又拿出了神策PRO PCIe 5.0 SSD,这一举措不仅展现了企业的创新实力,看来是又要来普及PCIe 5.0…

蓝桥杯 — — RSA解密

RSA解密 友情链接:RSA解密 题目: 思路: 对于这道题目,给出了三个已知量n d C,要我们进行解密,对于解密的公式 X C e m o d n X C^e \mod n XCemodn来讲,我们有唯一的参数e是未知的&#xf…

标定系列——Ubuntu18.04下opencv-4.5.3与opencv_contrib-4.5.3源码编译(二十)

Ubuntu18.04下opencv-4.5.3与opencv_contrib-4.5.3源码编译 说明下载安装步骤1.更新2.安装必要的依赖包3.下载源码包并解压4.终端运行如下命令5.添加配置路径6.验证安装是否成功 说明 Ubuntu18.04下对opencv-4.5.3与opencv_contrib-4.5.3源码编译 下载 CSDN下载 安装步骤 …

Qt创建基于应用程序的插件

应用程序插件 什么是插件插件的好处插件的种类应用程序插件创建应用程序的插件步骤:创建测试插件的应用程序步骤:应用程序插件示例开发环境创建示例生成插件运行结果总结什么是插件 插件是一种用于应用程序功能扩展和增强,且按照特定规范编写的应用程序接口的程序。 插件的…

【应急响应事件】记一次矿机木马事件

事情起因,是因为实验室有一台服务器的占用率从开机启动就是100%,很怀疑就是中了某种矿机木马,拿去挖矿了,然后经过师兄的不懈努力,终于找到了木马文件,给他命名为virus_sample 然后我就拿着样本去逆了 木马…

Centos7在线安装mysql5.7

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 安装Mysql yum源1、卸载旧环境2、下载mysql yum源3、上传到自己服务器1)、上传源2)、安装yum源3)、查看yum源是否安装成功 安装M…

【Java核心技术】第3章 Java的基本程序设计结构

1 数据类型 Java一共有8种数据类型: 4种整型 类型存储需求int4字节short2字节long8字节byte1字节 2种浮点型 类型存储需求float4字节double8字节 1种字符型 1种布尔型 2 变量声明 2.1 局部类型推断 如果可以从变量的初始值推断变量类型,只需要使用…

Linux网络基础2(下)

传输层 再谈端口号端口号的划分netstatpidof UDP协议 UDP的特点UDP缓冲区UDP使用注意事项UDP报头的理解基于UDP的应用层协议 TCP协议 4位首部长度16位窗口大小确认应答机制32位序号和32位确认序号6个标记位超时重传机制连接管理机制流量控制快重传机制再谈序号延迟应答面相字节…

Day16_学点儿JavaEE_实践_基于IDEA2023的简易JavaWeb项目、Tomcat输出乱码解决

0 JavaWeb项目目录 └──JavaWeb├──resources│ └──db.properties├──src│ └──com.sdust.web│ ├──servlet│ │ └──StudentServlet│ ├──pojo│ │ └──Student│ └──util│ └──JDBCUtil├──web│ ├──st…

电商技术揭秘十三:云计算在电商中的应用场景

相关系列文章 电商技术揭秘一:电商架构设计与核心技术 电商技术揭秘二:电商平台推荐系统的实现与优化 电商技术揭秘三:电商平台的支付与结算系统 电商技术揭秘四:电商平台的物流管理系统 电商技术揭秘五:电商平台…

百科引流攻略|小马识途分享百科营销的五个技巧

纵观整个互联网领域,国内几大巨头百度、抖音、腾讯都布局了自身的百科平台,百科营销也始终作为网络营销一个重要分支而存在。很多人都知道百科营销是品牌背书的一把王牌,但很少有人提及百科营销的引流作用。 有人可能会说,百科词条…

[数据结构]—二叉树基本概念

1.树概念及结构 1.树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点&#xff…

老房改造系列--如何用一套流程接入所有业务线

ToB业务没有太多高并发的挑战,但同一套流程往往可能需要承载各种差异化的复杂业务需求,所以如何让系统具备良好的扩展性成为ToB业务系统最大的挑战。本文将详细讲述如何用一套流程接入所有业务线? 老系统改造不是一蹴而就的,从20…