codecamp

styled-components 以前的API

[不推荐使用]  .extend延伸

注意

的 。延伸API已在样式组件v4中删除。用styled(StyledComponent)代替。

这是一种创建新 StyledComponent 并扩展其规则。

争论描述
1。 TaggedTemplateLiteral带CSS和插值的带标记的模板文字。
import styled from 'styled-components'

const Component = styled.div`
  color: red;
`

const Component2 = Component.extend`
  background: white;
  color: blue;
`

返回一个新的 StyledComponent 将新规则合并到调用此方法的组件中。

[不推荐使用] injectGlobal注入全局

注意

的 注入全局 API已删除并替换为 createGlobalStyle 在样式化组件v4中。

编写全局CSS的辅助方法。它不返回组件,而是将样式直接添加到样式表中。

争论描述
1. TaggedTemplateLiteral带标记的模板文字,其中包含您的全局样式。
import { injectGlobal } from 'styled-components'

injectGlobal`
  @font-face {
    font-family: "Operator Mono";
    src: url("../fonts/Operator-Mono.ttf");
  }

  body {
    margin: 0;
  }
`

我们不鼓励使用此功能。如果需要,请尝试在每个应用程序中最多使用一个文件。这是一个逃生舱口。仅用于稀有@ font-face 定义或身体样式。

[不推荐使用] innerRef" prop

“innerRef” 支柱

注意

的 “ innerRef”在样式组件v4中删除了prop以支持React 16forwardRefAPI。只要用正常参考 道具代替。

通过 参考 样式组件的道具会给您一个实例 StyledComponent包装器,但不包装到基础DOM节点。这是由于ref的工作方式。不可能调用DOM方法,例如焦点,直接在我们的包装上。

要获得对实际包装的DOM节点的引用,请将回调传递给 innerRef 道具代替。

注意

我们不支持字符串引用(即 innerRef =“ node”),因为它们已在React中弃用。

这个例子使用 innerRef 将ref保存到样式输入中,并在用户将鼠标悬停在其上时将其聚焦。

const Input = styled.input`
  padding: 0.5em;
  margin: 0.5em;
  color: palevioletred;
  background: papayawhip;
  border: none;
  border-radius: 3px;
`

class Form extends React.Component {
  render() {
    return (
      <Input
        placeholder="Hover here..."
        innerRef={x => {
          this.input = x
        }}
        onMouseEnter={() => this.input.focus()}
      />
    )
  }
}


styled-components TypeScript
styled-components Babel插件
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }