首页 > 解决方案 > 从 FlatList 中删除项目失败,并显示“TypeError: (0, _activities.default) is not a function”

问题描述

我有一个屏幕,其中显示了我试图为其分配操作FlatList的自定义组件:ActivityItemonDelete

const TravelScreen = props => {
    const myActivities = useSelector(state => state.activities.userActivities);
    const dispatch = useDispatch();
    return (
        <FlatList 
            data={myActivities}
            keyExtractor={item => item.id}
            renderItem={itemData => (
                <ActivityItem 
                    transportation={itemData.item.transportation} 
                    startTime={itemData.item.startTime} 
                    endTime={itemData.item.endTime} 
                    onEdit={() => {}} 
                    onDelete={() => {
                        dispatch(removeActivity(itemData.item.id));
                    }} 
                />
            )}
        />
    );
};

商店/动作/activities.js:

export const REMOVE_ACTIVITY = 'REMOVE_ACTIVITY';

export const removeActivity = id => {
    return {type: REMOVE_ACTIVITY, id: id};
};

商店/reducers/activities.js:

import ACTIVITIES from '../../data/dummy-activity-data';
import REMOVE_ACTIVITY from '../actions/activities';

const initialState = {
    allActivities: ACTIVITIES,
    userActivities: ACTIVITIES.filter(activity => activity.userId === 'u1')
};

export default (state = initialState, action) => {
    switch (action.type) {
        case REMOVE_ACTIVITY:
            const updatedUserActivities = {...state.items};
            delete updatedUserActivities[action.id];
            return {
                ...state,
                userActivities: updatedUserActivities
            };
    }
    return state;
};

标签: reactjsreact-nativereduxreact-redux

解决方案


你能分享一下你是如何导入removeActivity的吗?你是这样导入的吗?

import removeActivity from './actitivties'

如果是这样尝试像这样导入它:

import { removeActivity } from './activities'

推荐阅读