gpt4 book ai didi

javascript - react typescript : property 'body' does not exist type 'DefaultTheme'

转载 作者:行者123 更新时间:2023-12-05 00:34:44 24 4
gpt4 key购买 nike

我是 React 和 Typescript 的新手,我正在尝试将暗模式添加到我的项目中,
我创建了 globalStyle 组件、主题组件并使用 Themeprovider。
当我的 globalStyle 组件说:
属性“body”不存在类型“DefaultTheme”
我的 globalStyles.tsx 代码如下:

import { createGlobalStyle} from "styled-components"
export const GlobalStyles = createGlobalStyle`
body {
background: ${({ theme }) => theme.body};
color: ${({ theme }) => theme.text};
font-family: Tahoma, Helvetica, Arial, Roboto, sans-serif;
transition: all 0.50s linear;
}`
我的 Themes.tsx:
export const lightTheme = {
body: '#FFF',
text: '#363537',
background: '#363537',
}
export const darkTheme = {
body: '#363537',
text: '#FAFAFA',
background: '#999',
}
和我在 App.tsx 上的 Themeprovider 代码:
<ThemeProvider theme={this.state.theme === 'light' ? lightTheme : darkTheme}>
<>
<GlobalStyles/>
<ul className='tickets'>
{filteredTickets.map((ticket) => (
<li key={ticket.id} className={ticket.toggle ? 'expand' : 'ticket'}>
<h5 className='title'>{ticket.title}</h5>
<button onClick={() => this.onHide(ticket.id)}>Hide</button>
<p className={ticket.toggle ? 'show-more' : 'content'}>{ticket.content}</p>
<button onClick={()=> this.onToggle(ticket.id)}>{ticket.toggle ? 'Show less' : 'Show more'}</button>
<footer>
<div className='meta-data'>By {ticket.userEmail} | { new Date(ticket.creationTime).toLocaleString()}</div>
</footer>
</li>))}
</ul>
</>
</ThemeProvider>
我在做什么错以及为什么在 globalStyles.tsx 上无法识别 theme.body 和 theme.text?
谢谢 !

最佳答案

我将这个答案基于以下链接:https://spectrum.chat/styled-components/general/i-cant-use-my-theme-in-createglobalstyle-function-styled-components-v4-react-v16-6-3~0978b404-ab71-45c9-8f75-0862abde4eb5createGlobalStyle可以接受主题的形状:

createGlobalStyle<{theme: ThemeType}>
来自 styled-components文档,有这个( https://styled-components.com/docs/api#typescript):
declare module 'styled-components' {
export interface DefaultTheme {
borderRadius: string;

colors: {
main: string;
secondary: string;
};
}
}
所以,我建议你为你的主题设置一个接口(interface),如上所述,然后将它传递给 createGlobalStyle代替 ThemeType

关于javascript - react typescript : property 'body' does not exist type 'DefaultTheme' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66483948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com