繁体   English   中英

如何使用 React/Styled-components 继承样式

[英]How to inherit a style with React/Styled-components

我试图制作一个包裹一些组件的组件,并向内容添加 animation 延迟,这工作正常,但 styles 不是从其中的代码继承的。 到目前为止,这是我的代码:

如何调用组件:

 <Type>
    <h1>Title for me</h1>
 </Type>

它调用的代码:

import React,{useState, useEffect, useRef} from 'react'
import styled from 'styled-components'
import useTypewriter from 'components/functions/useTypewriter'

export default function Type(props) {
  const content = props.children.props.children
  console.log(props.chilren);
  const [effectContent, startEffect] = useTypewriter(content,20)

  useEffect(()=>{
    setTimeout(()=>{
      startEffect()
    },200)
  })
  return (
    <Wrap>
      <Hidden>{props.children}</Hidden>
      <OriginalStylePlease>{effectContent}</OriginalStylePlease>
    </Wrap>

  )
}

const Wrap = styled.div`
  position: relative;
`;
const Hidden = styled.div`
  visibility: hidden;
`;

const OriginalStylePlease = styled.h1`
  position: absolute;
  left: 0;
  top: 0;
`;

正如您可能已经知道的那样,我只是从孩子那里获取此内容,然后将其放入 div 中,这不是我想做的。

这是最后一个组件 - 它使用 CSS 属性“全部”

import React,{useState, useEffect, useRef} from 'react'
import styled from 'styled-components'
import useTypewriter from 'components/functions/useTypewriter'

export default function Type(props) {
  const content = props.children
  const [effectContent, startEffect] = useTypewriter(content,100)
  useEffect(()=>{
    setTimeout(()=>{
      startEffect()
    },props.delay)
  })
  return (
    <Wrap>
      <Hidden>{content}</Hidden>
      <Original>{effectContent}</Original>
    </Wrap>

  )
}

const Wrap = styled.div`
  all: inherit;
  position: relative;
  color: inherit;
`;
const Hidden = styled.div`
  all: inherit;
  visibility: hidden;

`;

const Original = styled.h1`
  all: inherit;
  position: absolute;
  left: 0;
  top: 0;
`;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM