styled-components + TypeScript

需要安装 @types
yarn add -D @types/styled-components

详细说明

原生dom使用 styled.div , styled.h1

  • Button 是 antd 的按钮

IMyButtonProps 是props的ts类型定义,

  • attrs需要指定一次, 普通css开头也需要指定一次

attrs 是 设置属性

  • 一般用来封装通用的属性, 不通用的就在jsx中直接传入,
    可以直接传入对象,也可以传入匿名方法最后返回对象

$myColor / $myBorderColor 是 props

  • $开头代表是 Transient props (v5.1新增),
    框架会自动过滤掉,不会传递给React组件,不是标准dom的属性名输出到html中会报错

border-radius: 10px; 是设置style,

  • props 方法中可以返回 字符串(无智能提示) 或 CSSProperties (有智能提示)

代码

import { Button } from 'antd';
import { NextPage } from 'next';
import { memo } from 'react';
import styled from 'styled-components';interface IMyButtonProps {$switchShape: boolean;$myColor: string;$myBorderColor: string;
}let MyButton = styled(Button).attrs<IMyButtonProps>((props) => {// console.log(props);let myShape = props.$switchShape ? 'circle' : 'round';return { type: 'primary', shape: myShape };})<IMyButtonProps>`margin-left: 10px;${{padding: '100px',}}${(props) => {// 可以获取到 attrs 中的结果// console.log(props);// 返回字符串return `color:${props.$myColor}`;}};${(props) => {// 返回 react CSSProperties 对象return {borderColor: props.$myBorderColor,};}};
`;interface IProp {}
let index: NextPage<IProp> = function (props) {return (<><Button style={{ borderRadius: '20px' }} type='primary'>click 1</Button><MyButton ghost={true} $switchShape $myBorderColor='black' $myColor='red'>click 2</MyButton></>);
};export default memo(index);

React styled-components TypeScript 的最佳实践相关推荐

  1. React Umi SSR SSG 使用TypeScript的最佳实践

    说明 Umi文档对TypeScript 只字未提 (太糟糕了, 感觉像是 KPI 项目), 所以只能自己看源码 和 Github 去捞TS的定义 最终封装为一个类型IUmiPage 使用的时候只需要指 ...

  2. 使用Typescript和React的最佳实践

    by Christopher Diggins 克里斯托弗·迪金斯(Christopher Diggins) 使用Typescript和React的最佳实践 (Best practices for us ...

  3. react 设计模式与最佳实践

    本文是阅读米凯莱·贝尔托利 <React设计模式与最佳实践> 一书的读书笔记,支持作者请点这里购买. Take is cheap, just show me the code. 废话不少说 ...

  4. 你不知道的 React 最佳实践

    React ⚛️ React 是一个用于开发用户界面的 JavaScript 库, 是由 Facebook 在 2013 年创建的. React 集成了许多令人兴奋的组件.库和框架[1]. 当然,开发 ...

  5. 基于 react, redux 最佳实践构建的 2048

    前段时间 React license 的问题闹的沸沸扬扬,搞得 React 社区人心惶惶,好在最终 React 团队听取了社区意见把 license 换成了 MIT.不管 React license ...

  6. typescript 叹号_TypeScript系列(五)最佳实践

    前言 在进入主题之前,我们先来简单回顾一下前四篇文章想要表达的主题: 当Redux遇到TypeScript:这篇文章从redux的action出发,介绍了as和可判别联合类型(Discriminate ...

  7. python组件的react实现_React-Router动态路由设计最佳实践

    写在前面 随着单页应用(SPA)概念的日趋火热,React框架在设计和实践中同样也围绕着SPA的概念来打造自己的技术栈体系,其中路由模块便是非常重要的一个组成部分.它承载着应用功能分区,复杂模块组织, ...

  8. React.js 2016 最佳实践 徬梓阅读 1584收藏 71

    为什么80%的码农都做不了架构师?>>>    译者按:近几个月React相关话题依旧火热,相信越来越多的开发者在尝试这样一项技术,我们团队也在PC和移动端不断总结经验.2016来了 ...

  9. 小程序 Typescript 最佳实践

    小程序结合TypeScript开发,如果用第三方框架,首选Taro已完美支持.但是如果你选择原生开发,那么下面的这份实践可能会帮到你. 小程序 Typescript 最佳实践 使用 gulp 构建(支 ...

最新文章

  1. 能ping通外网的域名,浏览器不能上网的解决办法
  2. eclipse的菜单栏消失问题解决
  3. 异常 java.lang.NumberFormatException: For input string:
  4. java实现将一个正整数分解质因数,Java将一个正整数分解质因数
  5. C语言中比较大小的函数模板,C语言中实现模板函数小结 : 不敢流泪
  6. openstack nova-network 的小bug的排错经历
  7. Laravel定时任务的每秒执行
  8. java中用流提取文档中的文字,语言实现从word文档中提取文本
  9. python创建时间序列_python时间序列按频率生成日期
  10. 嵌入式设备中支持国密算法的方法——移植Miracl库的步骤说明
  11. HDU 2676 Matrix
  12. 拉取远程分支到本地分支_想买的保险本地没有分支机构怎么办?异地投保理赔难吗?...
  13. 在一个字符串中找到第一个只出现一次的字符,并返回它的位置
  14. [WebApp开发]基础教程-Web App开发入门
  15. Julia:Datetime的用法
  16. 计算机桌面的照度,学校建筑实验室实验桌面照度标准值?
  17. Android学习别“走弯路”,移动端混合开发框架
  18. 家庭作业 题解(C++)
  19. 她在IT圈里摸爬滚打的十年
  20. mysql date的写法_mysql 对日期的写法 mybatis

热门文章

  1. 如何快速实现邮箱注册(项目案例)
  2. python 矩阵 将所有列向量合并成一个向量 将虚数矩阵转化为实数矩阵
  3. vivo手机显示服务器维修中,OPPO和vivo手机通病进水后黑屏不显示怎么维修
  4. 聚类评价指标(轮廓系数 Silhouette coefficient)
  5. C# 获取IP地址、主机信息(Host)、浏览器信息
  6. 阿里云https证书申请与部署
  7. 【附源码】Python计算机毕业设计烹饪课程预约系统
  8. matlab 手把手教你制作五子棋小游戏
  9. 小白看了直呼细节--CPP“引用”
  10. python语言strip的作用_Python语言中的strip()的理解