gpt4 book ai didi

javascript - 类型 'XYZ' 上不存在属性 'Readonly<{ children?: ReactNode; }> & Readonly<{}>'

转载 作者:数据小太阳 更新时间:2023-10-29 05:06:52 24 4
gpt4 key购买 nike

尝试访问 RecipeList.js 和 Recipe.js 的 .props 时出现语法错误。

这是 Recipe.js 的代码示例:

import React, {Component} from 'react';
import "./Recipe.css";

class Recipe extends Component {

// props: any; uncommenting this will fix the bug

render() {
// don't have to use return and parentheses for arrow with JSX
const ingredients = this.props.ingredients.map((ing, ind) => (
<li key={ind}>{ing}</li>
));
const {title, img, instructions} = this.props

return (
<div className="recipe-card">
<div className="recipe-card-img">
<img src={img} alt={title}/>
</div>
<div className="recipe-card-content">
<h3 className="recipe-title">
{title}
</h3>
<h4>
Ingredients:
</h4>
<ul>
{ingredients}
</ul>
<h4>
Instructions:
</h4>
<p>
{instructions}
</p>
</div>
</div>
)
}
}

Screenshot of .props error

但是,该项目没有抛出任何编译时错误并且该网站运行良好。

Screenshot of app working fine with no chrome console or terminal errors

我认为这与我的代码关系不大,而与 TypeScript 或某种用于 VScode 的 Javascript 预设配置关系不大,无法识别每个组件的 .props 属性,因为我在构建 React Tutorial Project 时遇到了类似的问题到我的编辑器中(为了确定,我什至从网站上复制粘贴了最终的 index.js 代码),尽管该应用程序运行良好,没有编译时错误。

Screenshot of the same .prop errors after following React Tutorial

解决这个问题的唯一方法是,如果我真的硬编码并为每个类创建一个 props 属性并将其设置为任意值,如下所示:

Screenshot of only solution to the syntax error

这是我更新的依赖项

"dependencies": {
"@types/react": "^16.4.13",
"prop-types": "^15.6.2",
"react": "^16.5.0",
"react-dom": "^16.5.0",
"react-scripts": "1.1.5",
"typescript": "^3.0.3"
}

最佳答案

您需要使用 interface 定义您的 Prop 和状态的外观以及 TypeScript 对 React.Component 的通用实现

import React, {Component} from 'react';
import "./Recipe.css";

interface IRecipeProps {
ingredients?: string[];
title?: string;
img?: string;
instructions?: string;
}

interface IRecipeState {
}

class Recipe extends Component<IRecipeProps, IRecipeState> {
render() {
const ingredients = this.props.ingredients.map((ing, ind) => (
<li key={ind}>{ing}</li>
));
const {title, img, instructions} = this.props

return (
<div className="recipe-card">
Your render code here
</div>
)
}
}
  • 我会将文件扩展名更改为 .tsx 以表明它是一个使用 TypeScript 的 React 文件 -> Recipe.tsx
  • 请调整类型(字符串)以适合您的数据。
  • 使用IRecipeState 定义组件状态的结构(this.state.fooBar)。现在可以将其留空,因为您不使用状态。
  • 确保对其他抛出错误的组件 (RecipeList.js) 执行相同的操作

关于javascript - 类型 'XYZ' 上不存在属性 'Readonly<{ children?: ReactNode; }> & Readonly<{}>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52249390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com