网站搜索

reactjs - 类型 '{}' 缺少类型 'Readonly' 的以下属性


我在使用 React 的 API 时遇到了一些问题,我正试图将标题、描述和每日价格传递到我的应用主页,但我收到错误提示 “类型 '{}' 缺少类型 'Readonly' 的以下属性: imagem, titulo, descricao, diaria, 以及另外 2 个。”

我尝试过在接口上将一些值设置为可选,但没有成功,我想寻求一些帮助,这里是正在使用的三个文件。

Casa.ts

export interface Casa {
  id?: string;
  imagem: string;
  titulo: string;
  descricao: string;
  diaria: number;
  cidade: string;
  estado: string;
}

Home.tsx

import React from "react";
import { Casa } from "../../backend/entidades/casas";

class criarCards extends React.Component<Casa, any> {
  constructor(props: Casa) {
    super(props);

    this.state = {
      casas: [],
      dadosCarregados: false,
    };
  }

  componentDidMount() {
    fetch("http://localhost:4000/casas")
      .then((res) => res.json())
      .then((json) => {
        this.setState({
          casas: json,
          dadosCarregados: true,
        });
      });
  }
  render() {
    const { dadosCarregados, casas } = this.state;
    if (!dadosCarregados) {
      return <h1>Carregando...</h1>;
    }

    return (
      <div className="App">
        <h1>Hospedagens</h1>{" "}
        {casas.map((casa: any) => (
          <ol key={casa.id}>
            Título da casa: {casa.titulo}, Descrição: {casa.descricao}, Preço da diária: {casa.diaria}
          </ol>
        ))}
      </div>
    );
  }
}

export default criarCards;

index.tsx

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import reportWebVitals from './reportWebVitals';
import Home from './Home';
import Sobre from "./Sobre";
import { AdicionarHospedagem } from './AdicionarHospedagem';

ReactDOM.render(
  <React.StrictMode>
    <BrowserRouter>
    <Routes>
      <Route path="/" element={<App />} >
      <Route path="/" element={<Home />} />
        <Route path="sobre" element={<Sobre />} />
        <Route path="adicionar" element={<AdicionarHospedagem />} />
      </Route>
    </Routes>
    </BrowserRouter>
  </React.StrictMode>,
  document.getElementById('root')
);

reportWebVitals();

我在论坛上查看了一些遇到同样问题的人,但他们忘记在 props 中传递接口,正如上面的代码所示,它是在类参数中传递的

错误发生在 index.tsx 文件中

答案#1

类型 {} 意味着你传入了一个空对象

类型 Casa 期望 6 个属性,但你没有提供

你应该尝试传入所需的参数

<Home id="" imagem="" titulo=""... />

在此处用你想要的实际值替换 ""