Redux API调用动作异常排查:fetchJokes触发类型错误
问题定位与修复方案
我一眼就发现了两个关键问题,正是它们导致了你遇到的错误,咱们逐个解决:
1. 导出/导入不匹配引发的函数未定义错误
你的fetchJokes是命名导出(export const fetchJokes),但在store.js里你用了默认导入的方式:
import fetchJokes from './actions/jokes';
这种情况下,fetchJokes会被解析为undefined(因为模块没有设置默认导出),自然会抛出is not a function的错误。
修复方式二选一:
- 方式一:修改导入语句为命名导入
在store.js里改成:import { fetchJokes } from './actions/jokes'; - 方式二:把fetchJokes改为默认导出
在/actions/jokes.js里调整导出逻辑:// 直接定义为默认导出 export default const fetchJokes = quantity => { // ... 原函数内容 } // 或者在原有命名导出后追加一行 export default fetchJokes;
2. 模板字符串语法错误(潜在问题)
你在fetch的URL里用了单引号包裹,但模板字符串需要用反引号()才能解析${quantity}`变量:
return fetch('https://api.icndb.com/jokes/random/${quantity}')
这会导致请求的URL是字面量https://api.icndb.com/jokes/random/${quantity},而不是替换成实际的数量值,后续请求必然失败。
修复:把单引号换成反引号
return fetch(`https://api.icndb.com/jokes/random/${quantity}`)
把这两个问题修复后,你的代码应该就能正常运行了。
内容的提问来源于stack exchange,提问作者a_zatula
相关产品推荐
相关产品推荐

