我目前正在将一个javascript/react项目转换为一个typescript/react/redux项目。
我现在有一个关于这个文件的问题:
import React from 'react';
import GoldenLayout from 'golden-layout';
import {Provider} from 'react-redux';
import Default from '../modules/m-Default/Default';
interface GoldenLayoutWrapperProps {}
interface GoldenLayoutWrapperState {}
class GoldenLayoutWrapper extends React.Component <GoldenLayoutWrapperProps, GoldenLayoutWrapperState> {
public layout;
static contextTypes = {
store: React.PropTypes.object.isRequired
};
private wrapComponent(Component, store) {
class Wrapped extends React.Component {
render () {
return (
<Provider store={store}>
<Component {...this.props}/>
</Provider>
)
}
}
return Wrapped;
}
componentDidMount() {
var layout = new GoldenLayout(this.layoutConfig, this.layout);
layout.registerComponent('Default', this.wrapComponent(Default, this.context.store));
}
render() {
return (
<div className="golden-layout-wrapper" ref={input => this.layout = input}/>
)
}
private layoutConfig = {}
}
export default GoldenLayoutWrapper;当我尝试编译时,我得到以下错误:
ERROR in [at-loader] ./src/main/GoldenLayoutWrapper.tsx:18:22
TS2339: Property 'PropTypes' does not exist on type 'typeof React'.在经历了一些磨难之后,有人建议给contextTypes一个静态修饰符,我也尝试过,但问题仍然存在。
可能的问题是什么?
发布于 2018-02-23 07:03:33
由于您正在使用React v16.0.0,因此需要使用prop-types,因为从React v15.5开始,它被视为一个单独的库
您可以通过npm将其安装为项目依赖项。
npm install --save prop-types然后在您想要使用它的组件内部:
import PropTypes from 'prop-types'; // ES6您可以直接使用PropTypes而不是React.PropTypes
您可以阅读有关属性类型Here的更多信息
发布于 2018-02-23 06:52:02
请在此处查看我的答案以了解完整的细节:Cannot read property 'string' of undefined | React.PropTypes | LayoutPropTypes.js
简而言之,从React v15.5开始,React.PropTypes被弃用。您需要从npm安装prop-types包。
https://stackoverflow.com/questions/48938443
复制相似问题