我正在尝试使用react-with-styles和Aphrodite在 Typescript 中设置我的样式。我正在使用此代码,模拟来自https://github.com/airbnb/react-dates#interfaces的代码:react-dates
DayPickerRangeController
const ThemedStyleSheet = require('react-with-styles/lib/ThemedStyleSheet').default
const aphroditeInterface = require('react-with-styles-interface-aphrodite').default
const DefaultTheme = require('react-dates/lib/theme/DefaultTheme').default
ThemedStyleSheet.registerInterface(aphroditeInterface)
ThemedStyleSheet.registerTheme(DefaultTheme)
// Importing react-dates after registering the theme, as per the docs.
import * as ReactDates from 'react-dates'
但是,当我运行它时,我在控制台中收到此运行时错误:
Cannot read property 'createLTR' of undefined
TypeError: Cannot read property 'createLTR' of undefined
at Object.createLTR (http://localhost:6006/static/preview.bundle.js:133281:47)
at createStyles (http://localhost:6006/static/preview.bundle.js:9710:59)
at WithStyles.maybeCreateStyles (http://localhost:6006/static/preview.bundle.js:9805:22)
at WithStyles.componentWillMount (http://localhost:6006/static/preview.bundle.js:9739:20)
at callComponentWillMount (http://localhost:6006/static/preview.bundle.js:42214:16)
at mountClassInstance (http://localhost:6006/static/preview.bundle.js:42310:7)
at updateClassComponent (http://localhost:6006/static/preview.bundle.js:43679:9)
at beginWork (http://localhost:6006/static/preview.bundle.js:44320:16)
at performUnitOfWork (http://localhost:6006/static/preview.bundle.js:47152:16)
at workLoop (http://localhost:6006/static/preview.bundle.js:47181:26)
在以下情况下我没有收到此错误:
我使用
registerInterfaceWithDefaultTheme
类中的函数(但这不允许我设置组件的样式)。(这让我感到惊讶,因为其中的代码registerInterfaceWithDefaultTheme
看起来与我所拥有的相同(至少对我而言))const aphroditeInterface = require('react-with-styles-interface-aphrodite').default const registerInterfaceWithDefaultTheme = require('react-dates/lib/utils/registerInterfaceWithDefaultTheme') .default registerInterfaceWithDefaultTheme(aphroditeInterface)
我使用
import 'react-dates/initialize';
(最终调用registerInterfaceWithDefaultTheme
)。
在以下情况下我仍然会收到此错误:
- 我交换了注册主题和界面的顺序
ThemedStyleSheet
我在文件顶部添加代码src/index
,而不是在与使用的文件相同的文件中DayPickerRangeController
(这是https://stackoverflow.com/a/48558841/1176156中的建议修复)- 我将来自https://github.com/airbnb/react-dates#interfaces的确切代码放入 Javascript 中,然后将其导入我正在使用的 Typescript 文件中
DayPickerRangeController
。
我已经在调试器中确认我所有的导入都得到了有效的代码,而不是例如undefined
.