React Redux中reducers的箭头函数警告

3

有人能告诉我为什么我的React应用程序会出现这个警告吗?

src/reducers/posts.js 第3行第1列:将箭头函数分配给变量,然后作为模块默认值导出

import { FETCH_ALL, CREATE, UPDATE, DELETE } from '../constants/actionTypes';

export default (posts = [], action) => {
    switch (action.type) {
        case FETCH_ALL:
            return action.payload;
        case UPDATE:
            return posts.map((post) => post._id === action.payload._id ? action.payload : post);
        case CREATE:
            return [ ...posts, action.payload];
        case DELETE:
            return posts.filter((post) => post._id !== action.payload);
        default:
            return posts;
    }
}

错误信息已经很明显了。将箭头函数分配给变量,然后将该变量作为默认导出。 - Jayce444
2个回答

4
你不能同时使用 export default声明变量。 请尝试使用以下代码代替:
const variable = (posts = [], action) => {
    switch (action.type) {
        case FETCH_ALL:
            return action.payload;
        case UPDATE:
            return posts.map((post) => post._id === action.payload._id ? action.payload : post);
        case CREATE:
            return [ ...posts, action.payload];
        case DELETE:
            return posts.filter((post) => post._id !== action.payload);
        default:
            return posts;
    }
}

export default variable

或使用传统命名函数导出默认值:

export default function variable(posts = [], action) {
    switch (action.type) {
        case FETCH_ALL:
            return action.payload;
        case UPDATE:
            return posts.map((post) => post._id === action.payload._id ? action.payload : post);
        case CREATE:
            return [ ...posts, action.payload];
        case DELETE:
            return posts.filter((post) => post._id !== action.payload);
        default:
            return posts;
    }
}

3

向你的函数添加变量:

export default const variable = (posts = [], action) => {
    switch (action.type) {
        case FETCH_ALL:
            return action.payload;
        case UPDATE:
            return posts.map((post) => post._id === action.payload._id ? action.payload : post);
        case CREATE:
            return [ ...posts, action.payload];
        case DELETE:
            return posts.filter((post) => post._id !== action.payload);
        default:
            return posts;
    }
}

JavaScript必须知道你要导出什么


或者可以使用 module.exports = {variable} - sharun k k
那对我有用!我分配了一个变量,然后在其他地方使用解构调用。谢谢Roman。 - Rastezzy
3
我收到了 TS1109: Expression expected. 的错误提示。 - pmiranda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接