【发布时间】:2021-01-27 23:38:31
【问题描述】:
这里是错误连接到 Redux 的 React 组件的示例违规代码。
import React from 'react';
import { View, StyleSheet, ViewStyle, Text } from 'react-native';
import { connect } from "react-redux";
import { StoreState } from "../../store/storeState/storeState";
import { LogFactory, Logger } from "../../vlabs-js/general/logging/log";
interface DevCompProps {
counter: number
}
class UnconnectedDevComp extends React.Component<DevCompProps> {
private logger: Logger;
constructor(props: DevCompProps) {
super(props);
this.logger = LogFactory.fromComp('DevComp');
}
render() {
this.logger.info(`render(): props='${this.props.counter}'`);
return <View style={{flexDirection: 'row', borderWidth: 3, borderColor: 'black', padding: 5}}>
<Text>Counter:</Text>
<Text>{this.props.counter}</Text>
</View>
}
}
const mapStateToProps = (state: StoreState) => {
return {
number: state.devState.counter
};
};
export const DevComp = connect(mapStateToProps)(UnconnectedDevComp)
为了让代码正常工作,mapStateToProps 应该是
const mapStateToProps = (state: StoreState) => {
return {
counter: state.devState.counter
};
};
代替
const mapStateToProps = (state: StoreState) => {
return {
number: state.devState.counter
};
};
有没有办法编译/InteliJ-Warn 检查 mapStateToProps 返回的对象是否与接口匹配
interface DevCompProps {
counter: number
}
所以这样的错误会被 IDE 标记出来,而不必手动发现。
【问题讨论】:
标签: reactjs typescript intellij-idea redux