javascript - react typescript : usestate type

标签 javascript reactjs typescript react-hooks

我正在尝试从 firebase 获取我的项目并将其放入带有钩子(Hook)的数组中。

一个项目如下:{name:“电影应用程序”,日期:t,描述:“这是我的第一个应用程序,一个完整的电影应用程序”}

//hooks
const [projects, setProject] = useState([]);

//function for get projects
async function getprojects(){
    let finalProjects = [];
    await db.collection('projects').get().then((querySnapshot) => {
        querySnapshot.docs.map(res => {
             const a = res.data();
             finalProjects.push(a)
        })
        //error here
        setProjects(finalProjects)
    })
}

useEffect(() => {
    getprojects();
}, []);

但是 finalProjects.push(res.data()) 不起作用,因为“‘DocumentData’类型的参数不可分配给‘never’类型的参数。”但是我应该如何使用 setProjects

将我的所有项目放入 projects

最佳答案

Typescript 不知道您在状态中存储什么,因此它不会让您将数据放入其中。您可以将其设为any 数组(不太理想)或DocumentData 数组。

const [projects, setProject] = useState<any[]>([]);
const [projects, setProject] = useState<DocumentData[]>([]);

确保 DocumentData 在范围内,从 firestore 导入。

关于javascript - react typescript : usestate type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63539135/

相关文章:

reactjs - React/Typescript - 至少需要 '3' 参数,但 JSX 工厂 'React.createElement' 最多提供 '2' 。 TS622

javascript - 如何在 angularjs 应用程序中注销时删除/清除存储在范围变量中的数据?

javascript - Backbone 模型。销毁不触发删除请求

javascript - 与 es6 类和 jquery 绑定(bind)

reactjs - 第二次调度 Action 时不会触发 Saga

javascript - 如何在异步函数中对用户输入使用 JavaScript 等待

angular - 类型 '{ key: string; }' 不可分配给类型 'Product' Angular 7

Angular 2 : focusing input causes 'expression has changed after it was changed' error

javascript - 如何在 Bootstrap 中使用输入类型=密码的工具提示显示输入的密码?

javascript - React 的 Json API 访问错误