【发布时间】:2021-10-03 10:41:23
【问题描述】:
我是 React 钩子的新手,正在尝试学习它。我有一个简单的 get api,它在 heroku 服务器中提供。我有以下两个组件 ContactCards 和 ContactCard,我在 ContactCards 中提供了 api。
这里我将缩略图和标题作为静态数据,其中 data1 和 data2 是来自 api 的数据。
我的名片
import React, { Component } from "react";
interface IContactCardProps {
thumbnail?: string;
title?: string;
data1?: string;
data2?: string;
}
interface IContactCardState {}
class ContactCard extends Component<IContactCardProps, IContactCardState> {
render() {
return (
<div className="contact-card">
<div className="container">
<div className="thumbnail">
<img src={this.props.thumbnail} alt={this.props.title} />
</div>
<div className="title">{this.props.title}</div>
<div className="data">{this.props.data1}</div>
<div className="data">{this.props.data2}</div>
</div>
</div>
);
}
}
export default ContactCard;
我的名片
import ContactCard from "./ContactCard";
import axios from "axios";
function ContactCards() {
const[contacts, setContacts] = useState([])
useEffect(() => {
axios.get('https://texas-crm1.herokuapp.com/api/contactinfo')
.then (res =>{
console.log(res.data[0])
let data = res.data[0];
setContacts ({
contacts: [
{
thumbnail: clock,
title: "Opening Times",
data1: data.open_hour,
data2: data.close_hour,
},
{
thumbnail: telephone,
title: "Phone",
data1: data.phone_1,
data2: data.phone_2,
},
{
thumbnail: location,
title: "Location",
data1: data.street_name,
data2: data.city + ", " + data.state + ", " + data.country,
},
],
});
})
.catch(err =>{
console.log(err)
})
})
return (
<div>
</div>
)
}
在这里,我从 setContacts 中的联系人到 catch 函数之前的右括号都有红色下划线。
错误提示如下:
类型参数 '{ contacts: { thumbnail: string;标题:字符串;数据1:任何;数据2:任何; }[]; }' 不可分配给“SetStateAction
【问题讨论】:
-
您的传递和对象 ->
{ contacts: [然后将状态创建为数组。 ->useState([]),也被视为您有一个接口IContactCardProps,使用它也可能有意义。 -
对不起@Keith,我不明白你实际上想说什么。
-
我将尝试在答案中进行更多解释。
标签: javascript reactjs api react-hooks use-effect