当前位置: 首页 > 知识库问答 >
问题:

无状态函数组件中的PropType

锺离马鲁
2023-03-14

在React中,我编写了一个无状态功能组件,现在想向其添加Prop类型验证。

列表组件:

import React from 'react';
import PropTypes from 'prop-types';

function List(props) {
  const todos = props.todos.map((todo, index) => (<li key={index}>{todo}</li>));
  return (<ul></ul>);
}

List.PropTypes = {
  todos: PropTypes.array.isRequired,
};

export default List;

App组件,渲染List

js prettyprint-override">import React from 'react';
import List from './List';

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      todos: '',
    };
  }

  render() {
    return (<List todos={this.state.todos} />);
  }
}

export default App;

正如你在App中看到的,我正在传递这个。状态待办事项列表。因为这个。状态todos是一个字符串,我希望道具类型验证能够生效。相反,我在浏览器控制台中得到一个错误,因为字符串没有名为map的方法。

为什么道具类型验证没有按预期工作?看看这个问题,情况似乎是一样的。

共有1个答案

百里星纬
2023-03-14

您应该将属性上的大小写更改为propTypes

- List.PropTypes = {
+ List.propTypes = {
    todos: PropTypes.array.isRequired,
  };

对的:

List.propTypes = {
  todos: PropTypes.array.isRequired,
};

(PropTypes对象的实例是小写的,但Class/Type是大写的。该实例是List.prop类型。类/类型是PropTypes。(

 类似资料:
  • 在不使用类的情况下,如何在react的功能性无状态组件中使用PropTypes?

  • 问题内容: 我正在尝试将在这里找到的这个很棒的动画转换为React可重用的组件。看来此组件将需要一个父组件作为画布,而许多子组件则为。 出于性能方面的考虑,将它们变成无状态组件可能会更好,因为会有很多这样的组件。我不熟悉制作无状态组件,并且想知道应该在哪里定义和中定义的和函数。 无状态组件的功能是在组件内部还是外部?换句话说,以下哪个更好? 1: 2: 每种都有什么优点/缺点,其中哪一种对我的特定

  • 我试图在TypeScript中编写一个React无状态函数组件。请参见以下代码: 然而,编译器在const Link上给了我一个错误: src/components/Link。tsx(17,7):错误TS2322:Type“({view,className,params,queryParams,store,refresh,style,children,title,router}:LinkPr…”不

  • 在我的React JS项目中,我正在处理。我已经通过了使用进行私有路由和身份验证的示例。 https://reacttraining.com/react-router/web/example/auth-workflow 根据这个留档,他们创建了一个作为无状态组件。 但我的要求是将其转换为有状态的React组件,因为我想将我的组件连接到redux存储。 这是我的代码。 无状态组件 我将这个组件转换成

  • 我的Navbar组件有2个子组件。每个组件都有自己的状态。在其组成部分内工作正常的国家。如何更新这两个状态从假到真的同时,当两个功能onclick将被执行? 主组件导航栏 列表菜单组件 汉堡包成分