【发布时间】:2020-05-29 22:57:13
【问题描述】:
我的问题类似于this one,但是我需要输入一个组件。我尝试了多种方法,但仍然出现错误。
我不确定问题是在我的理解中,还是我做错了什么?这是我尝试过的:
- 第一种方法可以正常工作,但会引发警告:React 无法识别 DOM 元素上的
isActive属性 - 第二次和第三次抛出 TS 错误:没有重载匹配此调用。
import * as React from "react";
import TextareaAutosize, { TextareaAutosizeProps } from "react-textarea-autosize";
import styled from "styled-components";
interface Props {
isActive?: boolean;
}
interface ExtendedProps extends Props, TextareaAutosizeProps {}
const FirstTry = styled(TextareaAutosize)<Props>`
color: ${({ isActive }) => (isActive ? "red" : "blue")};
`;
const SecondTry = styled(({ isActive, ...rest }: ExtendedProps) => (
<TextareaAutosize {...rest} />
))`
color: ${({ isActive }) => (isActive ? "red" : "blue")};
`;
const ThirdTry = ({ isActive, ...rest }: ExtendedProps) => {
const Foo = styled(TextareaAutosize)<TextareaAutosizeProps>`
color: ${isActive ? "red" : "blue"};
`;
return <Foo {...rest} />;
};
export default function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<FirstTry isActive minRows={3} />
{/* FirstTry - Warning: React does not recognize the `isActive` prop on a DOM element */}
<SecondTry isActive minRows={3} />
<ThirdTry isActive minRows={3} />
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
沙盒链接: https://codesandbox.io/s/zen-cdn-lp8pl?file=/src/App.tsx
【问题讨论】:
标签: reactjs typescript styled-components