javascript - 使用钩子插入 axios 结果
问题描述
我正在使用axiossave.json
通过REST API从文件中获取。
我遇到的问题是我似乎无法将结果返回到代码顶部的“任务”中。我不知道把它放在我的代码中的什么地方,也不知道该写什么。我希望你有一些建议或解决方案。
这是我要获取的代码:
export default function Tasks() {
let [tasks, setTasks] = useState([
{
content: 'Example',
}
]);
useEffect(() => {
axios.get('http://localhost:8080/all',{
crossDomain:true,
method: 'GET',
mode: 'no-cors',
credentials: 'include',
}
)
.then(function(res){
console.log('TodoItems is fetching.. ',res);
if (res.status !== 200){
console.log('Fetching failed, response status: '+ res.status);
return;
}
console.log(res.data.wordList)
})
.catch(function(err) {
console.log('Fetch error: ' , err);
});
}, []);
// });
let handleAddTask = task => {
setTasks(tasks.concat(task));
console.log("handleAddTask content: " + JSON.stringify(task))
};
let handleDeleteTask = id => {
setTasks(tasks.filter((task) => task.id !== id));
};
这是我收到的:
TodoItems is fetching..
{data: {…}, status: 200, statusText: "", headers: {…}, config: {…}, …}
config: {url: "http://localhost:8080/all", method: "get", headers: {…}, transformRequest: Array(1), transformResponse: Array(1), …}
data:
name: null
todo: null
wordList: Array(5)
0: {done: true, description: "Test"}
1: {done: true, description: "Test"}
2: {done: true, description: "Test"}
3: {done: true, description: "Test"}
4: {done: true, description: "Test"}
length: 5
__proto__: Array(0)
__proto__: Object
headers: {content-type: "application/json;charset=UTF-8"}
request: XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, onreadystatechange: ƒ, …}
status: 200
statusText: ""
__proto__: Object
我的问题是:
如何通过钩子使用 setTasks 将 wordList 数组插入任务?
console.log(res.data.wordList)
回报:
(5) [{…}, {…}, {…}, {…}, {…}]
0:
description: "Test"
done: true
__proto__: Object
1: {done: true, description: "Test"}
2: {done: true, description: "Test"}
3: {done: true, description: "Test"}
4: {done: true, description: "Test"}
length: 5
__proto__: Array(0)
这就是应用程序的外观。我想将我的加载save.json
到应用程序中。
我对反应很陌生,所以如果这个问题很愚蠢,请原谅。我希望你们中的一些人愿意帮忙:)
解决方案
您好,您可以在使用 useState 时使用解构数组的第二个参数在功能组件中设置状态。在你的情况下,这将是 setTasks..
.then(function(res){
console.log('TodoItems is fetching.. ',res);
if (res.status !== 200){
console.log('Fetching failed, response status: '+ res.status);
return;
}
// set tasks here
setTasks(res.data.wordList);
})
我想您只想在安装此组件时触发此效果,因此可以在依赖项中保留一个空数组(类似于 componentDidMount),如果不是,您可能希望在效果挂钩中指定依赖项。
推荐阅读
- excel - VBA - 复制并粘贴第 4 列的数据
- spring-boot - 带有 Spring Boot 和 JAX-WS RI 的 JAX-WS Web 服务
- syncfusion - 如果我可以通过在我的 Angular 项目中安装 syncfusion 作为模块来使用这些组件,那么我为什么需要下载并使用安装程序
- azure - 使用 Microsoft Identity 使用 Core 3.1 Web API 进行客户端 SPA 身份验证
- python - 如果它等于另一个值,则返回 json 数组中的值(转换为 python)
- sql - SQL OrderBy,如何与关键字 AS 一起使用
- c++ - 如何在 C++ 中计算和存储 6 位或更高精度的双精度值?
- flutter - 如何在颤动/火焰的游戏中检测长按
- winforms - Winforms饼图标签文本被截断
- python - 如何使用matplotlib定义相对于轴的ylabel位置?