Javascript 为什么我不能在React本机组件中使用connect?
我有一个需要调用dispatch的组件(this.props.dispatch),但是dispatch不存在,所以我决定添加一个连接到我的组件,但是这样做时我得到了一个错误。当我的应用程序中的其他组件也有连接并且没有这样做时,我很难理解为什么添加连接会引发错误。如果我删除了连接线,那么错误就会消失。有人知道我为什么会犯这个错误吗Javascript 为什么我不能在React本机组件中使用connect?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我有一个需要调用dispatch的组件(this.props.dispatch),但是dispatch不存在,所以我决定添加一个连接到我的组件,但是这样做时我得到了一个错误。当我的应用程序中的其他组件也有连接并且没有这样做时,我很难理解为什么添加连接会引发错误。如果我删除了连接线,那么错误就会消失。有人知道我为什么会犯这个错误吗 export default class ItemsInCartContent extends Component { constructor(props) {
export default class ItemsInCartContent extends Component {
constructor(props) {
super(props);
this.state = {
active: null,
products: props.products,
ascending: true,
sortIcon: 'unsorted',
sortIconStyle: styles.sortIcon
};
this.props.dispatch(getOrderDetails(this.props.orderId));
}
render() {
const cartIcon = (<Icon name="shopping-cart" style={styles.cartIcon} />);
const sortIcon = (<Icon name={this.state.sortIcon} style={this.state.sortIconStyle} />);
return (
<View style={styles.itemsInCartContent}>
</View>
);
}
}
function mapStateToProps(state) {
const {products} = state;
return {
products
};
}
export default connect(mapStateToProps)(ItemsInCartContent);
导出默认类ItemsInCartContent扩展组件{
建造师(道具){
超级(道具);
此.state={
活动:空,
产品:道具、产品、,
是的,
巫术:“未分类”,
巫术
};
this.props.dispatch(getOrderDetails(this.props.orderId));
}
render(){
常数cartIcon=();
const-sortIcon=();
报税表(
);
}
}
函数MapStateTops(状态){
const{products}=状态;
返回{
产品
};
}
导出默认连接(MapStateTops)(ItemsInCartContent);
如果仔细阅读日志,错误很明显: 。。。合成错误。。。每个模块只允许一个默认导出 你有
export default class ItemsInCartContent extends Component {
及
这些导出中只有一个可以是default
我建议完全删除ItemsInCartContent
上的导出,因为该组件应与connect
一起使用,或者,使其明确:
export class ItemsInCartContent extends Component {
如果仔细阅读日志,则错误非常明显: 。。。合成错误。。。每个模块只允许一个默认导出 你有
export default class ItemsInCartContent extends Component {
及
这些导出中只有一个可以是default
我建议完全删除ItemsInCartContent
上的导出,因为该组件应与connect
一起使用,或者,使其明确:
export class ItemsInCartContent extends Component {
我认为在getOrderDetails函数中调用的异步请求给出了一个错误:您不应该从
构造函数
发送操作。好的,我将对getOrderDetails的调用移动到componentDidMount(),但仍然得到相同的错误。即使我完全删除了那一行,我仍然会得到那个错误。只有删除连接线,错误才会消失。@Tanya那不是答案,那是评论。如果您从错误的位置发送操作,您可能会得到非常令人惊讶的行为。我认为在getOrderDetails函数中调用的异步请求给出了500个操作。您不应该从构造函数
发送操作。好的,我已将对getOrderDetails的调用移动到componentDidMount(),但仍然收到相同的错误。即使我完全删除了那一行,我仍然会得到那个错误。只有删除连接线,错误才会消失。@Tanya那不是答案,那是评论。如果您从错误的位置发送操作,您可能会出现非常令人惊讶的行为。