如何将道具值发送到情感反应中的样式组件?

How to send props value to styled component in emotion react?

我是 MUI 的新手并且有反应,我正在尝试制作输入文本框组件以​​重用它们,而不是每次都创建。

我正在尝试通过作为道具传递来设置 width 值。我怎样才能实现它。

InputText - 功能组件

import React from 'react'
import styled from '@emotion/styled'
import { Box } from '@mui/system'

type propsInputText ={
  width:string;
}

const TextBox = styled.input`
    width:${props => props.width? props.width : '30px;'}  
`

function InputText(props: propsInputText) {
  return (
    <TextBox />
  )
}

export default InputText

主页 - 组件

import InputText from '../Tools/TextBox/InputText';

<InputText width='200px' />

备注

不仅仅是设置宽度,我正在尝试将任何内容传递给样式化的组件,例如:颜色、字体大小、高度。

你想要这样的东西吗?

const InputBox = (props) => {
  const TextBox = styled.input(({ theme }) => ({
    width: props.width ? props.width : 200,
    color: props.color ? props.color : "blue",
    background: props.background? props.background : "yellow",
    height: props.height? props.height : 40
  }));
  return <TextBox />;
};

然后你可以这样实现它:

<>
    <InputBox width={100} color={"white"} background={"black"} height={"10"} />
    <InputBox />
</>

我找到了解决办法,我只是忘了在功能组件上传递参数,

type propsInputText ={
  width:string;
}

const TextBox = styled.input`
    width:${props => props.width? props.width : '30px;'}  
`

function InputText(props: propsInputText) {
    console.log("InputText Props = "+props.width);
    return (
          <TextBox width={props.width} />    //here I need to add the props
    )
}

export default InputText