繁体   English   中英

在React Native中为样式化组件自定义组件添加样式

[英]Add styles to Styled Component custom Component in React Native

我有button.js

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

const StyledButton = styled.TouchableOpacity`
  border: 1px solid #fff;
  border-radius: 10px;
  padding-horizontal: 10px;
  padding-vertical: 5px;
`;

const StyledButtonText = styled.Text`
  color: #fff;
  font-size: 12;
`;

export default ({ children }) => (
  <StyledButton>
    <StyledButtonText>{children.toUpperCase()}</StyledButtonText>
  </StyledButton>
);

它的用法:

import React, { Component } from "react";
import styled from "styled-components";
import Button from "./button";

const StyledNavView = styled.View`
  justify-content: flex-end;
  flex-direction: row;
  background: #000;
  padding-horizontal: 10px;
  padding-vertical: 10px;
`;

const StyledTodayButton = styled(Button)`
  margin: 10px;
`;

export default class Nav extends Component {
  render() {
    return (
      <StyledNavView>
        <StyledTodayButton>Today</StyledTodayButton>
        <Button>Previous</Button>
      </StyledNavView>
    );
  }
}

问题是,我在StyledTodayButton应用的StyledTodayButton实际上从未应用过。 我是否误解了样式组件中的扩展样式?

有两种方法可以使它工作:

  • 扩展按钮样式:

const StyledTodayButton = Button.extend'margin: 10px'

  • 将道具传递给按钮:
const Button = styled.button'

/* ...your props */

margin: ${props => props.withMargin ? '10px' : '0px'};

然后调用render方法,您可以使用以下方法调用它:

<Button withMargin  {...restProps} /> 

暂无
暂无

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

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