【发布时间】:2018-08-19 10:22:12
【问题描述】:
首先,我对 React 世界比较陌生,在我职业生涯的大部分时间里都编写了大量 API。我正在为非营利组织构建一个 React 应用程序,而我只是在尝试起步。
我添加了一个头类如下:
import './header.css';
import * as React from 'react';
import * as actions from '../../actions/authenticationActions';
import { AppState } from '../../state/appState';
import { connect, Dispatch } from 'react-redux';
const logo = require('./logo.svg');
interface Props {
displayName: string;
isAuthenticated: boolean;
logIn?: () => void;
logOut?: () => void;
}
interface State {
}
class Header extends React.Component<Props, State> {
constructor(props: Props, state: State) {
super(props, state);
}
render() {
return (
<div className={'Header'}>
<div className={'Container'}>
<img src={logo} className="App-logo" alt="logo" />
<div className={'Header__nav'}>
<div className={'userLogin'}>
<div className={'user'}>{this.props.displayName}</div>
<a onClick={this.props.logOut}>Log Out</a><a onClick={this.props.logIn}>Log In</a>
</div>
{/*<a href='https://localhost/' className={'button button--goBack'}>Back to Website</a>*/}
</div>
</div>
</div>
);
}
}
export const mapStateToProps = ({ currentUser }: AppState) => ({
displayName: (currentUser != null ? currentUser.preferredName : 'Please Log In'),
isAuthenticated: currentUser != null
});
export const mapDispatchToProps = (dispatch: Dispatch<actions.AuthenticationActions>) => ({
logIn: () => dispatch(actions.logIn()),
logOut: () => dispatch(actions.logOut())
});
export default connect(mapStateToProps, mapDispatchToProps)(Header);
这在很大程度上似乎没问题,但由于以下错误消息而无法编译:
“typeof Header”类型的参数不能分配给参数 类型'组件类型 登录;登出: ...'。类型'typeof Header'不是 可分配给类型 'StatelessComponent 登录;日志...'。 类型 'typeof Header' 提供不匹配的签名 '(props: { displayName: string; isAuthenticated: boolean; } & { logIn: () => 登录;登出:() => 登出; } & { 孩子?:反应节点; }, 语境?: 任何):反应元素 |空'。
我已经为此奋斗了几个小时,但无济于事。我相当有信心这是一个菜鸟错误;请温柔一点!
【问题讨论】:
标签: reactjs typescript react-redux