React中styled-components的使用

目录
  • 一、官网地址
  • 二、styled-components
  • 三、基本使用
  • 四、全局默认样式引入
  • 五、传参
  • 六、继承
  • 七、修改组件内部标签
  • 八、定义组件属性
  • 九、背景图片引入
  • 十、塑造组件
  • 十一、动画```javascript
  • 十二、当标签过多时需要划分太多组件,我们可以通过以下写法来简化组件的编写

一、官网地址

https://www.styled-components.com/

二、styled-components

  1、styled-components 样式化组件,主要作用是它可以编写实际的CSS代码来设计组件样式,也不需要组件和样式之间的映射,即创建后就是一个正常的React 组件,

  并且可以附加样式给当前组件。 优化react组件

  2、在一个组件内会将结构、样式和逻辑写在一起,虽然这违背了关注点分离的原则,但是这有利于组件间的隔离。为了顺应组件化的潮流

  3、使用styled-components不需要再使用className属性来控制样式,而是将样式写成更具语义化的组件的形式

  4、使用style-components会随机生成一个class名称,这样不会污染到全局变量,当然因为随机生成,维护会增加难度

三、基本使用

1、安装

cnpm i styled-components -S    ||    yarn add styled-components

2、引入

import styled from "styled-components";

3、使用

export const Header = styled.div`
  width:100%;
  height:1rem;
  background:red
`

import {Header} from "./style/index";
class App extends Component{
  render(){
    return (
      <Header/>
    )
  }
}

四、全局默认样式引入

引入新的API createGlobalStyle ,在下面创建一个 GlobalStyle 变量,用 createGlobalStyle 方法把全局样式包裹在其中

import { createGlobalStyle } from "styled-components";
export const GlobalStyle = createGlobalStyle`
html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4, h5, h6, form, fieldset, legend, img { margin:0; padding:0; }

fieldset, c{ border:none; }

img{display: block;}

address, caption, cite, code, dfn, th, var { font-style:normal; font-weight:normal; }

ul, ol ,li{ list-style:none; }

body { color:#333; font:12px BASE "SimSun","宋体","Arial Narrow",HELVETICA; background:#fff;}

a { color:#666; text-decoration:none; }

*{box-sizing:border-box}

body,html,#root{
    height: 100%;
    overflow: hidden;
}
//将 <GlobalStyle /> 组件放在 render() 中最外层元素下面

import React, { Component ,Fragment} from 'react';
import {GlobalStyle} from "./reset";
class App extends Component {
  render() {
    return (
      <Fragment>
        <GlobalStyle/>
      </Fragment>
    );
  }
}

export default App;

五、传参

 如果我们需要动态改变元素的样式,则可以通过传递参数的方式进行改变

import {Header} from "style/index.js"

render(){
  return (
        <Header bgColor="red"/>
    )
}

style/index.js

import styled from "styled-components";
export const Header = styled.div`
  width:100px;
  height:200px;
  props.bgColor}

六、继承

  如果我们需要继承样式的时候我们可以通过 styled(继承的组件名称)``

const button = styled.button`
  border:0;
  width:100px;
  height:40px;
  text-align:center;
  color:#000;
`

export const StyledButton = styled(button)`
  color:#fff;
`

七、修改组件内部标签

在调用组件的时候我们可以通过as来修改组件 as="元素名称"

render(){
  return (
    <Header as="p"/>
  )
}    

Header组件内部渲染的时候就是用的p标签

八、定义组件属性

export const Input = styled.input.attrs({
    value:(props)=>props.value,
    name:"input"
})`
  border:0;
  width:100px;
  height:100px;
`

九、背景图片引入

import logo from "./imgs/logo.png";

export const BgLogo =  styled.div`
  width:100px;
  height:200px;
  background:url(${logo}) no-repate;
`

十、塑造组件

有一种情况,一些原本就已经是组件,需要给这些组件添加样式,这时需要用到塑造组件

import React from "react";
import styled from "styled-components";

const Link = ({className,children})=>(
        <a className={className}>
             {children}
         </a>
)
export StyleLink = styled(Link)`
  color:red
`

十一、动画```javascript

const move = keyframes`
  0%{
         transform:rotate(0%);
   }
  100%{
     transform :rotate(100%);

  }
`
export const TransFormDiv = styled.div`
   width:100px;
   height:100px;
   background:red;
   animation:${move} 2s;
`

十二、当标签过多时需要划分太多组件,我们可以通过以下写法来简化组件的编写

&代表父级

export const StyledUl = styled.ul`
    border:1px solid #ccc;
    >li{
         border-bottom:1px solid #green;
         line-height:30px;
         padding-left:20px;
        &>p{
            color:red

         }
    }  

到此这篇关于React中styled-components的使用的文章就介绍到这了,更多相关React styled-components内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • React styled-components设置组件属性的方法

    问题 最近在试着用react做一个音乐播放器,在这之前其实并不了解styled-components,但由于使用css in js并且想实现hover效果,百度各种解决方案后发现了styled-components这个好东西,如果你看到了这篇博客,就证明你应该了解或者熟练运用styled-components了. 回到项目开发中,一个音乐播放器应该由多个组件组成,其中有一个list组件用于展示歌曲列表,就像这样 鹅...好像暴露了我的喜好... 每一列就是一个div(当然ul也是可以的),为了方

  • React styled components样式组件化使用流程

    目录 安装 基本使用 props传值修改样式 样式化组件 样式扩展 动画 将style样式写在同一个文件中并且组件化使用. 安装 npm i styled-components 基本使用 const 样式组件名=引入的styled-components.替代的标签(支持sass写法) 再使用样式组件名将标签包裹起来即可 import React, { Component } from 'react'; import styled from 'styled-components'; class A

  • 深入研究React中setState源码

    React作为一门前端框架,虽然只是focus在MVVM中的View部分,但还是实现了View和model的绑定.修改数据的同时,可以实现View的刷新.这大大简化了我们的逻辑,只用关心数据流的变化,同时减少了代码量,使得后期维护也更加方便.这个特性则要归功于setState()方法.React中利用队列机制来管理state,避免了很多重复的View刷新.下面我们来从源码角度探寻下setState机制. 1 还是先声明一个组件,从最开始一步步来寻源: class App extends Comp

  • 关于react中组件通信的几种方式详解

    前言 刚入门React可能会因为React的单向数据流的特性而遇到组件间沟通的麻烦,下面这篇文章就来给大家详细介绍下,在开始之前先来看一张图: react组件通信 需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 1. 父组件向子组件通信 React数据流动是单向的,父组件向子组件通信也是最常见的;父组件通过props向子组件传递需要的信息 Child.jsx import React from 'react'; import Pro

  • react中使用css的7中方式(最全总结)

    第一种: 在组件中直接使用style 不需要组件从外部引入css文件,直接在组件中书写. import React, { Component } from "react"; const div1 = { width: "300px", margin: "30px auto", backgroundColor: "#44014C", //驼峰法 minHeight: "200px", boxSizing: &

  • React中如何引入Angular组件详解

    前言 为了在我的编辑器中使用 Angular,我用 Angular 编写了一个重命名功能.而为了使用它,我得再次使用一次 customEvent ,而在这个微前端架构的系统中,其事件通讯机制已经相当的复杂.在这部分的代码进一步恶化之前,我得尝试有没有别的方式.于是,我想到了之前在其它组件中使用的 Web Components 技术,而 Angular 6 正好可以支持. 下面话不多说了,来一起看看详细的介绍吧 HTML 中引入 Web Components 我所需要做的事情也相当的简单,只需要将

  • 详解React中的不可变值

    什么是不可变值 函数式编程是指程序里面的函数和表达式都能像数学中的函数一样,给定了输入值,输出是确定的.比如 let a = 1; let b = a + 1; => a = 1 b = 2; 变量b出现,虽然使用了变量a的值,但是没有修改a的值. 再看我们熟悉的react中的代码,假如初始化了this.state = { count: 1 } componentDidMount() { const newState = { ...state, count: 2 }; // { count: 2

  • React中Portals与错误边界处理实现

    目录 Portals 错误边界处理 如果没有使用错误边界会怎样? 注意点 Portals 可以说是 插槽,但 不同于 Vue 中的 slot,它指的是将一个 React 元素渲染到指定的容器 (真实 DOM) 中 比如说,Modal 组件一般默认直接作为 body 的真实结构的子元素渲染出来,那么我们就可以借助 ReactDOM.createPortal(ReactElement, RealDOM container) 创建一个 React 元素,示例代码: import React from

  • React中代码分割的4种实现方式

    目录 前言 import() React.lazy import() + React Loadable UmiJS 按需加载 总结 前言 在 React 应用中,我们通常的做法是直接将某个模块导入到页面中,这样做导致的结果是打包出来的包体积过大.尤其是在引入了体积巨大的第三个库的情况下,打包后的包体积会十分巨大.因此,我们需要关注我们的应用中所包含的代码,以避免因体积过大而导致加载时间过长. 对代码进行分割能够“懒加载”当前用户所需要的内容,能够显著提高应用的性能.尽管并没有减少应用的整体代码体

  • React中styled-components的使用

    目录 一.官网地址 二.styled-components 三.基本使用 四.全局默认样式引入 五.传参 六.继承 七.修改组件内部标签 八.定义组件属性 九.背景图片引入 十.塑造组件 十一.动画```javascript 十二.当标签过多时需要划分太多组件,我们可以通过以下写法来简化组件的编写 一.官网地址 https://www.styled-components.com/ 二.styled-components 1.styled-components 样式化组件,主要作用是它可以编写实际

  • 说说react中引入css的方式有哪些并区别在哪

    目录 前言 方式 在组件内 组件中引入css文件 组件中引入 .module.css 文件 CSS in JS 区别 前言 组件式开发选择合适的css解决方案尤为重要 通常会遵循以下规则: 可以编写局部css,不会随意污染其他组件内的原生: 可以编写动态的css,可以获取当前组件的一些状态,根据状态的变化生成不同的css样式: 支持所有的css特性:伪类.动画.媒体查询等: 编写起来简洁方便.最好符合一贯的css风格特点 在这一方面,vue使用css起来更为简洁: 通过 style 标签编写样式

随机推荐