Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:undefined不是对象(计算';_order.default.addOrder';)_Javascript_Reactjs_React Native_React Redux_Expo - Fatal编程技术网

Javascript TypeError:undefined不是对象(计算';_order.default.addOrder';)

Javascript TypeError:undefined不是对象(计算';_order.default.addOrder';),javascript,reactjs,react-native,react-redux,expo,Javascript,Reactjs,React Native,React Redux,Expo,我正在尝试从CartScreen调用addOrder函数,以调用位于我的操作文件夹中的函数 问题是,每当我按下OrderNow按钮时,addOrder功能就会被触发。但是,我得到了这样的错误 CartScreen.js import React from 'react'; import { View, Text, FlatList, Button, StyleSheet } from 'react-native'; import { useSelector, useDispatch } fro

我正在尝试从
CartScreen
调用
addOrder
函数,以调用位于我的操作文件夹中的函数

问题是,每当我按下OrderNow按钮时,addOrder功能就会被触发。但是,我得到了这样的错误

CartScreen.js

import React from 'react';
import { View, Text, FlatList, Button, StyleSheet } from 'react-native';
import { useSelector, useDispatch } from 'react-redux';
import * as cartAction from '../../store/actions/cart';
import ordersAction from '../../store/actions/order';
import Colors from '../../constants/Colors';
import CartItem from '../../components/shop/CartItem';

const CartScreen = props => {
  const dispatch = useDispatch();
  const cartTotalAmount = useSelector(state => state.cart.totalAmount);
  const cartItems = useSelector(state => {
    const transformedCartItems = [];
    for (const key in state.cart.items) {
      transformedCartItems.push({
        productId: key,
        productTitle: state.cart.items[key].productTitle,
        productPrice: state.cart.items[key].productPrice,
        quantity: state.cart.items[key].quantity,
        sum: state.cart.items[key].sum,
      });
    }
    return transformedCartItems.sort((a, b) =>
      a.productId > b.productId ? 1 : -1,
    );
  });

  console.log('CATRITEM', cartItems);

  return (
    <View style={styles.screen}>
      <View style={styles.summary}>
        <Text style={styles.summaryText}>
          Total:{' '}
          <Text style={styles.amount}>${cartTotalAmount.toFixed(2)}</Text>
        </Text>
        <Button
          color={'green'}
          title="Order Now"
          disabled={cartItems.length === 0}
          onPress={() => {
            dispatch(ordersAction.addOrder(cartItems, cartTotalAmount));
          }}
        />
      </View>
      <FlatList
        data={cartItems}
        keyExtractor={item => item.productId}
        renderItem={itemData => (
          <CartItem
            quantity={itemData.item.quantity}
            title={itemData.item.productTitle}
            amount={itemData.item.sum}
            onRemove={() => {
              dispatch(cartAction.removeFromCart(itemData.item.productId));
            }}
          />
        )}
      />
    </View>
  );
};

CartScreen.navigationOptions = {
  headerTitle: 'Your Cart',
};

const styles = StyleSheet.create({
  screen: {
    margin: 20,
  },
  summary: {
    flexDirection: 'row',
    alignItems: 'center',
    justifyContent: 'space-between',
    marginBottom: 20,
    padding: 10,
    shadowColor: 'black',
    shadowOpacity: 0.26,
    shadowOffset: { width: 0, height: 2 },
    shadowRadius: 8,
    elevation: 5,
    borderRadius: 10,
    backgroundColor: 'white',
  },
  summaryText: {
    fontSize: 18,
  },
  amount: {
    color: Colors.primary,
  },
});

export default CartScreen;

以不同的方式使用
导入
,并将该函数调用为:

import { addOrder } from '../../store/actions/order';
然后按以下方式调用:

dispatch(addOrder(cartItems, cartTotalAmount));

以不同的方式使用
导入
,并将该函数调用为:

import { addOrder } from '../../store/actions/order';
然后按以下方式调用:

dispatch(addOrder(cartItems, cartTotalAmount));

你的进口错了。你导入了orderAction,就像

import ordersAction from '../../store/actions/order';
你应该做的是

import * as ordersAction from '../../store/actions/order';

导入错误后,一切正常。你导入了orderAction,就像

import ordersAction from '../../store/actions/order';
你应该做的是

import * as ordersAction from '../../store/actions/order';

@Rooban刚刚更新了导入部分之后,事情应该会很顺利。你能试试吗?@Rooban真棒,很乐意帮忙!:)@Rooban刚刚更新了导入部分。你能试试吗?@Rooban真棒,很乐意帮忙!:)