如何修复Redux报错:"Expected the root reducer to be a function. Instead, received: ''"
Redux配置报错修复方案
你遇到的Redux报错核心原因是likeSlice.js中的导出语法错误,以下是具体修复步骤:
错误定位
在likeSlice.js的最后一行,你写了:
export default {likeReducer} = likeSlice.reducer;
这是完全错误的语法,既不是正确的默认导出写法,也不符合对象解构赋值规则,导致store.js无法正确导入likeReducer,进而引发Redux初始化报错。
修正后的likeSlice.js代码
import { createSlice } from "@reduxjs/toolkit"; const likeSlice = createSlice({ name: 'likes', initialState: { posts: [], }, reducers: { addPost: (state, action) => { state.posts = [...state.posts, action.payload]; }, removePost: (state, action) => { state.posts = state.posts.filter(post => post !== action.payload); }, }, }) export const {addPost, removePost} = likeSlice.actions; // 正确的默认导出:直接导出reducer export default likeSlice.reducer;
额外说明
- 你提到其他同配置项目正常,是因为那些项目的slice导出语法正确,这个错误是当前代码特有的笔误。
- 如果修复后Expo Snack仍报错,建议尝试清除Snack的缓存(比如刷新页面、重新加载项目),Expo Snack确实偶尔会有缓存导致的异常。
内容的提问来源于stack exchange,提问作者Liam Horton
相关产品推荐
相关产品推荐

