【发布时间】:2021-05-25 19:16:50
【问题描述】:
我是样式组件的新手,我正在尝试使用 React Native 构建一个天气应用程序。我通常会使用 CSS 模块,但似乎这不是移动开发的选项。
代码如下:
import ThemeModel from 'models/ThemeModel'
import React, { PureComponent } from 'react'
import styled from 'styled-components/native'
interface HomeScreenComponentInterface {
theme?: ThemeModel
getWeatherData: () => void;
isLoading: boolean | null;
}
class HomeScreenComponent extends PureComponent<HomeScreenComponentInterface> {
componentDidMount() {
const { getWeatherData } = this.props
getWeatherData()
}
render() {
const Container = styled.View`
padding: 20px 0;
`
const HeaderText = styled.Text`
color: ${(props: HomeScreenComponentInterface) => props.theme && props.theme.colors.lightBlue};
font-size: ${(props: HomeScreenComponentInterface) => props.theme && props.theme.fontSizes.xLarge};
font-weight: 500;
`
return (
<Container>
<HeaderText>Weather App</HeaderText>
</Container>
)
}
}
这是错误的屏幕截图:
这是 Theme.tsx
import React, { FC, ReactNode } from 'react'
import { ThemeProvider } from 'styled-components'
const theme = {
colors: {
powderWhite: '#FFFDF9',
persianGreen: '#06B49A',
lightBlue: '#AFDBD2',
onyx: '#36313D',
},
fonts: ['sans-serif', 'Roboto'],
fontSizes: {
small: '12px',
medium: '16px',
large: '24px',
xLarge: '32px',
},
}
interface ThemeProps {
children: ReactNode
}
const Theme: FC<ThemeProps> = ({ children }) => (
<ThemeProvider theme={ theme }>{children}</ThemeProvider>
)
export default Theme
我相信我只需要将主题道具传递给这个组件,但我不知道该怎么做..
任何帮助都将不胜感激。
【问题讨论】:
标签: reactjs typescript react-native typeerror styled-components