style-components的熟练运用

2023-11-17

安装

首先下一个包:

npm install --save styled-components

使用

创建组价以及根据属性加样式

import React ,{Component} from 'react'
import styled from 'styled-components';
const Btn=styled.div`
    width:200px;
    height:200px;
    background:skyblue
    ${props=>`color:${props.primary?"white":"red"}`}
    border:${props=>props.black?"solid 3px black":""}
`
// 基本样式  以及根据属性加样式
class Example extends Component{
    render(){
        return (
            <div>
                <Btn primary black>22</Btn>
            </div>
        )
    }
}
export default Example;

上面样例中介绍了,如和建立一个样式组件,如何根据组建的属性来添加样式。

添加动画和根据属性值写样式



import React, { Component } from 'react'
import styled,  {keyframes } from 'styled-components'
import { Wrapper } from './commons'
//定义一个动画
const rotate = keyframes`
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(180deg);
    }
`
const Input = styled.input.attrs({
    type: props => props.password ? 'password' : 'text'
})`
    color: palevioletred;
    font-size: 1em;
    border: 2px solid palevioletred;
    border-radius: 3px;
    //使用动画
    animation: ${rotate} 2s;
    /* here we use the dynamically computed props */
    //根据属性的值来写样式
    padding: ${props => props.padding};
`;
class Example extends Component {
    render () {
        return (
            <Wrapper>
               <Input padding="10px" placeholder = "请输入..."/>
            </Wrapper>
        )
    }
}

export default Example

(注释写的很明白)

样式继承和as的使用



import React, { Component } from 'react'
import styled from 'styled-components'
import { Wrapper } from './commons'
const Button = styled.button`
  font-size: 1em;
  margin: 1em;
  padding: 0.25em 1em;
  border: 2px solid palevioletred;
  border-radius: 3px;
  /* ${ props =>`background: ${props.primary ? 'palevioletred' : 'white'}` }   */

  background: ${props => props.primary ? "palevioletred" : "white"};
  color: ${props => props.primary ? "white" : "palevioletred"};

`
const TomatoButton = styled(Button)`
    color: tomato;
    border-color: tomato;
`

const Revserse = props => {
    return <button {...props}>
        {props.children.split('').reverse().join('')}
    </button>
}
class Example extends Component {
    render () {
        return (
            <Wrapper>
                <Button>outline</Button>
                <TomatoButton as = "a">outline</TomatoButton>
                {/* 如果as的是一个组件,真正渲染的就是as的组件 */}
                <TomatoButton as = {Revserse} >今天是个好日子</TomatoButton>
            </Wrapper>
        )
    }
}
export default Example

(注释写的很明白)style componnet 如果处理的是tag,就会将自身身上的所有的属性都给dom加上(dom能识别的),如果处理的是一个组件,styleComponent会一股脑的将这些都传递给这个组件。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

style-components的熟练运用 的相关文章

  • 在校学生如何白嫖黑群辉虚拟机和内网穿透,实现海量资源的公网访问?(小白专用)

    文章目录 前言 本教程解决的问题是 按照本教程方法操作后 达到的效果是 前排提醒 1 搭建群辉虚拟机 1 1 下载黑群辉文件 vmvare虚拟机安装包 1 2 安装VMware虚拟机 1 3 解压黑 群辉虚拟机文件 1 4 虚拟机初始化 1
  • 对 React Hook的闭包陷阱的理解,有哪些解决方案?

    hooks中 奇怪 其实符合逻辑 的 闭包陷阱 的场景 同时 在许多 react hooks 的文章里 也能看到 useRef 的身影 那么为什么使用 useRef 又能摆脱 这个 闭包陷阱 搞清楚这些问题 将能较大的提升对 react h
  • react基础--组件通讯:props基础、子传父、父传子、兄弟组件通讯、context跨级组件、props进阶

    目录 一 props基础 1 1 概述 1 2 函数组件通讯 1 2 1 基本用法 1 2 1 对象数据传递 1 3 类组件通讯 1 4 props的特点 二 组件通讯三种方式 2 1 父传子 2 2 子传父 2 3 兄弟组件通讯 三 co
  • 三分钟实现一个react-router-dom5.0的路由拦截(导航守卫)

    不同于vue 通过在路由里设置meta元字符实现路由拦截 在使用 Vue 框架提供了路由守卫功能 用来在进入某个路有前进行一些校验工作 如果校验失败 就跳转到 404 或者登陆页面 比如 Vue 中的 beforeEnter 函数 rout
  • Vue框架--Ruoyi解析(前端)

    路由router注册 router目录下的 index js 配合 permission js 是整套vue前端项目的权限判断核心 index js 里面的path 配置都是一些不会与权限挂钩的路由 例如 404 登录页面路径等 permi
  • 【react】新旧生命周期对比

    componentWillUpdate componentWillReceiveProps componentWillMount 上述这三个生命周期在V18以上的版本中 使用时要加上UNSELF name
  • Notion笔记搭建博客网站 - NotionNext

    NotionNext是什么 NotionNext是我在Github上开源的基于Next js框架开发的博客生成器 目的是帮助写作爱好者们通过Notion笔记快速搭建一个独立站 从而专注于写作 而不需要操心网站的维护 它将您的Notion笔记
  • Swagget技术·SpringBoot继承Swagger框架详解!

    文章目录 一 Swagger简介 二 SpringBoot集成Swagger 三 配置Swagger 1 Swagger实例Bean是Docket 所以通过配置Docket实例来配置Swaggger 2 可以通过apiInfo 属性配置文档
  • React-(4)React中的事件绑定

    React中的事件绑定 在 React 组件中 每个方法的上下文都会指向该组件的实例 即自动绑定 this 为当前组件 而且 React 还会对这种引用进行缓存 以达到 CPU 和内存的最优化 在使用 ES6 classes 或者纯函数时
  • hook中使用ref使用

    对于antd的fom表单 hook使用ref import React useState useEffect useRef from react const dateRef useRef dateRef current setFieldsV
  • React(一):React的设计哲学 - 简单之美

    React 一 React的设计哲学 简单之美 React 二 React开发神器Webpack React 三 理解JSX和组件 React 四 虚拟DOM Diff算法解析 React 五 使用Flux搭建React应用程序架构 Rea
  • Umi+Dva初印象<基础应用,结构,流转逻辑>

    目录 前言 知识储备 generator函数 Dva初识 实际交互 函数式组件 class组件 前言 项目初始为umi脚手架进行初始化 lt 初始化过程 http t csdn cn cuTaY gt 工程中加载了umi自带的antd ui
  • React、Vue2.x、Vue3.0的diff算法

    前言 本文章不讲解 vDom 实现 mount 挂载 以及 render 函数 只讨论三种 diff 算法 VNode 类型不考虑 component functional component Fragment Teleport 只考虑 E
  • React class组件、react-hook函数组件分别实现五子棋

    react class类组件 react hook函数组件分别实现五子棋 前言 使用create react app脚手架简单搭建 不用安装其他依赖 纯 js css实现 这里就只是简单的说明目录结构和思路 具体的代码实现请转到 Githu
  • 10分钟带你了解轻量级插件框架x3py

    写在前面 由于本人目前主要从事的是Windows客户端开发方面的工作 所以本文介绍x3py的侧重点也是从客户端程序开发者方面叙述的 本文主要参考整理自x3py的官方Wiki 修正了一些官方示例中的错误 有兴趣的同学可以直接阅读原文 设计目的
  • 值得学习与推荐的c/c++框架和函数库

    这几天不上班 翻翻Evernote中记录的一些笔记 刚好有时间把记录的一些好玩链接转载一下 这篇文章里提到的很多库都用过 尤其是图像处理相关库 尤其是opencv及cximage 当时做图像算法时 很多算法就是从上面找来 然后自己修改的 比
  • 【React】 4课 react初识组件

    首先我们如1课创建一个文件夹在文件夹中安装react环境需要的配置文件 npm init y npm i babel standalone D npm i react react dom D 安装配置文件教程链接 https blog cs
  • mfc窗口创建的create与oncreate

    在view类中 create 是虚函数由框架调用 是用来 生成一个窗口的子窗口 oncreate 消息响应函数 是用来 表示一个窗口正在生成 某个CWnd的Create函数由当前CWnd的Owner调用 而在CWnd Create中 又会调
  • React中渲染html结构---dangerouslySetInnerHTML

    dangerouslySetInnerHTML 胡子 语法绑定的内容全部作为普通文本渲染 渲染html结构基于 dangerouslySetInnerHTML dangerouslySetInnerHTML 是 React 标签的一个属性
  • 如何提高React组件的渲染效率的?在React中如何避免不必要的render?

    面试官 说说你是如何提高组件的渲染效率的 在React中如何避免不必要的render 一 是什么 react 基于虚拟 DOM 和高效 Diff 算法的完美配合 实现了对 DOM 最小粒度的更新 大多数情况下 React 对 DOM 的渲染

随机推荐

  • CentOS8结束生命周期后如何切换镜像源

    CentOS8结束生命周期后如何切换镜像源 官方提供了一个替代源 但不再进行任何更新 仅提供软件包 CentOS8系统在国内推荐使用阿里云的镜像源 具体切换过程如下 备份现有的repo配置文件 rename repo repo bak et
  • 【Python三大结构练习3】

    1 温度转换 题目描述 输入摄氏温度 华氏温度 输出对应的华氏温度 摄氏温度 这里采用82F表示华氏82度 采用28C表示摄氏28度 实数部分是温度值 转换算法 C F 32 1 8 F C 1 8 32 其中 C表示摄氏温度 F表示华氏温
  • [其他]IDEA中Maven项目配置国内源

    配置国内源主要解决了 在maven项目中pom xml下载jar包失败或过慢的问题 在IDEA中的设置分成两种 设置当前项目与新创项目 我们就需要两种都进行设置 不然只有在当前项目配置了国内源 新创项目的时候还是默认的状态 由于下面两种设置
  • msvcr120.dll丢失的解决方法-一键解决提示msvcr120.dll丢失问题

    msvcr120 dll是的动态链接库文件之一 它在Windows操作系统中发挥着重要的作用 它提供了应用程序所需的各种功能和方法 该文件返回编译后的代码所需的支持库 msvcr120 dll包含用于C C 编译器生成的应用程序所需的重要功
  • 区块链的结构和原理

    区块链的结构和原理 文章目录 区块链的结构和原理 区块链原理 区块链结构 关于区块链的几个问题 结语 区块链原理 区块链是一个链表 链表上存有交易信息 所有人共享同一个链表 因此它也是一个没有管理员的分布式数据库 即去中心化数据库 所有人都
  • 《Java并发编程的艺术》知识点

    目录 一 并发编程挑战 1 上下文切换 2 死锁 二 并发机制底层实现原理 1 volatile原理 2 synchronized原理 3 原子类实现原理 CAS存在的三大问题 三 内存模型 1 指令重排 四 并发编程基础 1 概念 2 优
  • myisamchk是用来做什么的?

    myisamchk是MySQL数据库管理系统中的一个工具 而不是Java编程语言的一部分 myisamchk是用于维护和修复MySQL数据库中MyISAM存储引擎表的工具 MyISAM是MySQL数据库中一种常用的存储引擎 它适用于读取频率
  • 冒泡排序代码python

    冒泡排序的python代码如下 def bubbleSort arr n len arr Traverse through all array elements for i in range n Last i elements are al
  • 微信小程序官方组件展示之画布canvas源码

    以下将展示微信小程序之画布canvas源码官方组件能力 组件样式仅供参考 开发者可根据自身需求定义组件样式 具体属性参数详见小程序开发文档 功能描述 画布 2 9 0 起支持一套新 Canvas 2D 接口 需指定 type 属性 同时支持
  • 数字IC设计——跨时钟域篇3(单比特处理)

    数字IC设计 跨时钟域篇3 单比特处理 下面介绍常见的单比特跨时钟域的处理方法 一 慢时钟域信号同步到快时钟域的处理方法 两级寄存器同步 慢时钟信号进入到更快的时钟域时 频率相差2倍以上 此时不用考虑快时钟域信号采样丢失问题 可以考虑使用两
  • java 线性表---------双向链表(源代码)

    1 public class DuLinkList
  • 【python数据挖掘课程】十二.Pandas、Matplotlib结合SQL语句对比图分析

    这篇文章主要讲述Python常用数据分析包Numpy Pandas Matplotlib结合MySQL分析数据 前一篇文章 python数据挖掘课程 十一 Pandas Matplotlib结合SQL语句可视化分析 讲述了MySQL绘图分析
  • msys2 修改国内源加速pacman

    1 msys2 修改国内源加速pacman 清华大学 etc pacman d mirrorlist mingw32 Server https mirrors tuna tsinghua edu cn msys2 mingw i686 1
  • netty源码分析之LengthFieldBasedFrameDecoder

    http www jianshu com p a0a51fd79f62 hmsr toutiao io utm medium toutiao io utm source toutiao io 拆包的原理 关于拆包原理的上一篇博文 netty
  • 五一节假期结束给团队开会,快速进入工作状态

    大家好 五一的假期大家过的都还开心吧 五一长假已经结束了 更开心的事情马上又要来了 再坚持10天 又要发工资了 再坚持上3天班又可以缓冲一下休息一天了 打工人 上班快乐 伴随着这些开心在这里我请大家尽快从自由松散的假期状态中走出来 重整旗鼓
  • Mac VS Code 如何去除右边的预览功能

    取消选中Minimap即可
  • Scala中的高阶函数

    1 定义 当一个函数 func1 中的 参数列表 传入的是函数 那么函数func1 就是高阶函数 上边几个函数可以 提炼出为一个高阶函数 因为 他们只是 黄线标志的部分不同 我们可以 定义一个 函数作为作为参数传递进去 来提取为 一般规律
  • opencv+nvcodec实现视频硬解码

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 系统配置 前言 一 NVCODEC是什么 二 OpenCV编译 1 安装Driver CUDA 2 编译OpenCV 总结 系统配置 操作系统 Ubuntu18 0
  • SpringMVC的拦截器

    SpringMVC的拦截器 SpringMVC的拦截器 SpringMVC的拦截器 01 SpringMVC拦截器 拦截器的作用 理解 02 SpringMVC拦截器 interceptor和filter区别 理解 记忆 03 Spring
  • style-components的熟练运用

    安装 首先下一个包 npm install save styled components 使用 创建组价以及根据属性加样式 import React Component from react import styled from style