reactjs - 连接的容器组件中的类型错误
问题描述
我正在将 React 应用程序转换为 TypeScript,并且我的应用程序容器组件包含以下容器组件:
App.tsx
class App extends Component {
render() {
return (
<AppContainer>
<HeaderContainer />
<TabContainer />
<ViewContainer />
</AppContainer>
)
}
}
export default App
HeaderContainer.tsx
const mapStateToProps = (state: AppState) => ({version: state.settings.version})
const mapDispatchToProps = () => ({})
export default connect(
mapStateToProps,
mapDispatchToProps
)(Header)
Header.tsx
const HeaderContainer = styled('header')({
flex: '0 0 auto',
flexDirection: 'row-reverse',
});
const HeaderRow = styled('div')({
padding: '10px 0px 0px 0px',
display: 'flex',
flexDirection: 'row-reverse',
justifyContent: 'right',
maxHeight: '100px',
});
const HeaderLogo = styled('img')({
margin: '0px 5px',
height: '80px',
width: '80px',
display: 'flex',
order: 1,
});
const HeaderInfo = styled('div')({
margin: '0px 15px 0px 10px',
display: 'flex',
justifyContent: 'flex-start',
flexDirection: 'column',
order: 0,
});
const HeaderName = styled('div')({
display: 'flex',
marginTop: '7px',
flexGrow: 1,
order: 0,
fontSize: '40px',
});
const HeaderVersion = styled('div')({
display: 'flex',
flexGrow: 1,
order: 1,
fontSize: '20px',
});
const Header = ({ version }) => (
<HeaderContainer>
<Disclaimer />
<HeaderRow>
<HeaderLogo src={process.env.PUBLIC_URL + "/icons/icon-512x512.png"} alt="logo" />
<HeaderInfo>
<HeaderName>App Name</HeaderName>
<HeaderVersion>{version}</HeaderVersion>
</HeaderInfo>
</HeaderRow>
</HeaderContainer>
)
Header.propTypes = {
version: PropTypes.string.isRequired,
}
export default Header
我收到一个类型HeaderContainer
错误App.tsx
:
Type error: Property 'version' is missing in type '{}' but required in type 'Pick<InferProps<{ version: Validator<string>; }>, "version">'.
我基本明白这是在说什么。但是,我不明白为什么错误出现在HeaderContainer
而不是出现Header
,我也不明白为什么会出现错误,因为Header
它只是connect
在容器的函数内部实现,并传递给它所需的道具.
注释掉propTypes
in可以消除Header
错误。
解决方案
您是否在样式化组件内的任何地方使用 version 道具?您可能必须version
像这样直接传递给样式化组件const Header = styled.div<HeaderProps>
哪里HeaderProps
是:
interface HeaderProps {
version: type
}
推荐阅读
- json - 如何使用参数作为文件名从 postgres 表创建 json 文件
- express - 将所有 dotenv 键和值传播到 process.env 中,而不必在 serverless.yml 中一一定义
- dynamics-crm - Dynamics 365 在用户帐户下创建子用户
- docker - docker-desktop 中的“主机”指的是哪里?
- debian-packaging - 如何获取 debian 包的 postinst 文件的环境变量?
- node.js - 使 for 循环成为一个承诺并等待它
- asp.net - 连接到 Redis 集群的某个节点时,单实例锁无法工作
- flutter - 在 ListTile 的前导中使用时不适合图像
- laravel - Laravel 一条特定路线给出 403 (nginx)
- python - `pydantic` 中的私有属性