样式化组件 - 如何防止将道具传递给扩展组件?
Styled Component - How to prevent a prop from being passed to the extended component?
我正在扩展 Textarea
,我希望 completed
可以被 StyledItemTextarea
访问,而不是 Textarea
。我怎样才能做到这一点?
import Textarea from 'react-textarea-autosize';
const TextareaAutosizeSC = styled(Textarea)`
...
`;
const StyledItemTextarea = TextareaAutosizeSC.extend`
color: ${({ completed }) => completed ? '#ccc' : '#fff'};
`;
const MyTextarea = ({ completed }) => <StyledItemTextarea completed={completed} />;
可能是这样的:
const TextareaAutosizeSC = ({ completed, ...rest }) => {
const TextArea = styled(Textarea)`
...
`;
return <TextArea {...rest} />
}
或
const TextareaAutosizeSC = styled(Textarea)`
...
`;
const TextAreaWithoutSomeProps = ({ completed, ...rest }) => <TextareaAutosizeSC {...rest} />
我找到了解决方案:
import Textarea from 'react-textarea-autosize';
const StyledItemTextarea = styled(({ completed, ...rest }) => <Textarea {...rest} />)`
color: ${({ completed }) => completed ? '#ccc' : '#fff'};
`;
const MyTextarea = ({ completed }) => <StyledItemTextarea completed={completed} />;
我正在扩展 Textarea
,我希望 completed
可以被 StyledItemTextarea
访问,而不是 Textarea
。我怎样才能做到这一点?
import Textarea from 'react-textarea-autosize';
const TextareaAutosizeSC = styled(Textarea)`
...
`;
const StyledItemTextarea = TextareaAutosizeSC.extend`
color: ${({ completed }) => completed ? '#ccc' : '#fff'};
`;
const MyTextarea = ({ completed }) => <StyledItemTextarea completed={completed} />;
可能是这样的:
const TextareaAutosizeSC = ({ completed, ...rest }) => {
const TextArea = styled(Textarea)`
...
`;
return <TextArea {...rest} />
}
或
const TextareaAutosizeSC = styled(Textarea)`
...
`;
const TextAreaWithoutSomeProps = ({ completed, ...rest }) => <TextareaAutosizeSC {...rest} />
我找到了解决方案:
import Textarea from 'react-textarea-autosize';
const StyledItemTextarea = styled(({ completed, ...rest }) => <Textarea {...rest} />)`
color: ${({ completed }) => completed ? '#ccc' : '#fff'};
`;
const MyTextarea = ({ completed }) => <StyledItemTextarea completed={completed} />;