我有以下示例:終極版,反應,打字稿:連接返回查看類需要道具
import * as React from "react";
import { connect } from 'react-redux';
interface IMessage {
message : string;
}
class SayMessage extends React.Component<IMessage, {}>{
render() {
return (<div>{this.props.message}</div>);
}
}
function mapStateToProps(state : any) : IMessage {
return { message : "Hello, world" };
}
const SayMessageContainer = connect(mapStateToProps)(SayMessage);
export class SomeOtherView extends React.Component<{},{}>{
render(){
return (<SayMessageContainer/>);
}
}
上<SayMessageContainer/>
會拋出:
屬性「消息」中缺少類型「IntrinsicAttributes & IntrinsicClassAttributes & IMessage & {children?:ReactElement ...'。
該示例應如何更改以便Connect可以通過mapStateToProps提供道具?
注意/可能提示:SayMessageContainer是類型的SayMessage,這對我來說似乎是。
打字稿2.0.0
編輯
寫我自己的集裝箱似乎解決它,但我寧願弄清楚如何正確使用做connect
class SayMessageContainer extends React.Component<{},{}>{
render() {
const props = mapStateToProps({});
return (
<SayMessage {...props}/>
);
}
}
編輯2 使用以下類型:
"react-redux": "registry:npm/react-redux#4.4.0+20160614222153",
"react-router": "registry:npm/react-router#2.4.0+20160628165748",
"react-router-redux": "registry:npm/react-router-redux#4.0.0+20160602212457",
"redux": "registry:npm/redux#3.0.6+20160214194820"
是否使用的是分型?那些在DefinitelyTyped或在npm? –
「react-redux」:「registry:npm/react-redux#4.4.0 + 20160614222153」, 「react-router」:「registry:npm/react-router#2.4.0 + 20160628165748」, 「react- router-redux「:」registry:npm/react-router-redux#4.0.0 + 20160602212457「, 」redux「:」registry:npm/redux#3.0。6 + 20160214194820「 –
根據最新的[類型](https://github.com/andrew-w-ross/typings-react-redux/blob/master/react-redux.d.ts),」 connect(...)'('wrapWithConnect')是一個帶有原型'T - > T'的函數(帶'T extends React.ComponentConstructor'),使得生成的組件構造函數期望相同的一組道具,但是這個問題沒有解決,你可能需要手動處理它,也可以參考這個問題:https://github.com/reactjs/react-redux/issues/290 –