reactjs - React Axios-Hooks:分配 URL 并使用 switch 语句调用 useAxios?
问题描述
尝试创建一个使用 switch 语句的钩子,将各种 URL 分配给使用 switch 语句的 useAxios() 调用。我遇到了一个我希望输入的问题:
React 不允许我在 switch 部分之后移动调用,我收到一个编译器错误,说明我正在尝试有条件地使用钩子,它显然在 Switch 语句之外。
这是当前的测试代码(只有一个状态编码的 URL 和切换前的 useAxios 调用):
import React, { useState, useEffect } from 'react';
import useAxios from 'axios-hooks';
export const UseTestAPI = (requestAPI, requestData) => {
var returnData = "";
var dataURL = "";
const [testURL, setTestURL] = useState('https://jsonplaceholder.typicode.com/todos/1');
const [{ data, loading, error }, refetch] = useAxios(testURL);
console.log("data in Communicator:", data);
switch (requestAPI)
{
case "getTest1Data":
setTestURL('https://jsonplaceholder.typicode.com/todos/2');
break;
case "getSourceData":
break;
default:
return "ERR: API Does Not Exist";
}
}
解决方案
您不能像您尝试的那样更改挂钩的默认值。好吧,可能有一种方法,它是 JS,一切皆有可能,但这不是使用钩子的好方法。
useAxios
将采用像给定的 URL 或config。此外,您的refetch
函数也将采用config
您可以将部分传递给两者。我可能不会在 init 中进行调用,而是使用 baseUrl 和选项设置为不请求的 init。然后发送一个带有调用的路径,该调用useEffect
将在组件挂载时被调用。config
然后你可以在你的部分发送一个switch
将“2”添加到baseUrl
.
您也可以跳过呼叫,只在 init 中useEffect
发送一个不带选项的选项,无论您喜欢哪个。url: '2'
export const UseTestAPI = (requestAPI, requestData) => {
var returnData = "";
var dataURL = "";
const [{ data, loading, error }, refetch] = useAxios({baseUrl: 'https://jsonplaceholder.typicode.com/todos/'}, {manual:true});
useEffect(() => {
refetch({url: '1'});
}, []
);
console.log("data in Communicator:", data);
switch (requestAPI)
{
case "getTest1Data":
refetch({url: '2'});
break;
case "getSourceData":
break;
default:
return "ERR: API Does Not Exist";
}
}
推荐阅读
- excel - 将公式从 vba 传递到单元格
- python - 比较 N-Puzzle 问题的 3D 数组中的每个单元格
- reactjs - 如何在 React 应用程序的调试模式下重命名 Visual Studio 2019 中的文件夹/文件
- javascript - 通过鼠标悬停获取 id 号,然后使用该 id 号来切换带有无线电输入焦点的 bg-image
- c++ - C++ ASCI 值而不是符号,但转换失败
- express - iRedMail 在标准安装后阻止自定义端口
- python - 在 Termux、Android 中安装 Uvicorn 时出现问题
- ios - 在带有核心图的图表上绘制更大的点
- python - extract each first item from list of tuples in pandas column
- rust - 如何指定 Cargo 包只能在某些平台上编译?