- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个包含两个 Prop 的组件。第一个是字符串列表,例如['string1', 'string2']
第二个是字符串列表,例如[['string1arr1' ,'string2arr1'], ['string3arr2', 'string4arr2']]
。
这就是我的组件的大致样子:
import React from 'react';
import PropTypes from 'prop-types';
export default function ComponentName (props){
//insert component code here
}
ComponentName.propTypes = {
one: PropTypes.arrayOf(PropTypes.string).isRequired,
two: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)).isRequired,
}
当我通过具有不同数据类型的 Prop 时,例如
<ComponentName one={123} two={'abc'} />
没有发生 PropTypes 错误,组件正常执行。
我一直在浏览几个不同的教程,试图看看我做错了什么,从我所看到的情况来看,我正确地使用了 poropTypes。我也尝试过使用更简单的要求,例如 one: PropTypes.string.isRequired
但它仍然不起作用。
安装的 react 和 prop-types 的版本:
"react": "^17.0.2",
"prop-types": "^15.8.1"
Babel 依赖:
"@babel/core": "^7.16.7",
"@babel/plugin-proposal-class-properties": "^7.16.7",
"@babel/preset-env": "^7.16.7",
"@babel/preset-react": "^7.16.7",
"babel-loader": "^8.2.3",
它现在可以工作了,我不确定我做了什么来修复它:/
最佳答案
看起来不错。但是我不确定上面的示例是否与您在代码中使用的语义相同。您不能声明export default ComponentName (props)
,ComponentName 是未知的,既不是函数也不是类。尝试这样的事情,也许它会解决你的问题:
import React from 'react';
import PropTypes from 'prop-types';
function ComponentName (props){
//insert component code here
}
ComponentName.propTypes = {
one: PropTypes.arrayOf(PropTypes.string).isRequired,
two: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)).isRequired,
}
export default ComponentName;
编辑:
你的代码在这里对我有用:
package.json
{
"name": "my-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
"@testing-library/user-event": "^12.8.3",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"web-vitals": "^1.1.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
App.js
import logo from "./logo.svg";
import "./App.css";
import ComponentName from "./ComponentName";
function App() {
return (
<div className="App">
<header className="App-header">
<ComponentName one={["123"]} two={[["923939"]]} />
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;
ComponentName.js
import React from "react";
import PropTypes from "prop-types";
export default function ComponentName() {
return <div>ComponentName</div>;
}
ComponentName.propTypes = {
one: PropTypes.arrayOf(PropTypes.string).isRequired,
two: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)).isRequired,
};
关于javascript - React - PropTypes 不强制执行 isRequired,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70660709/
我有一个组件需要 propType oneOfType bool 或 object 所以我写道: processInfoValues: PropTypes.oneOfType([ PropTyp
我遇到了这个奇怪的问题...在我的代码中,无论我将 IsRequired 的值设置为 false 还是 true,它都会保持为 false。但是,如果我输入 DefaultValue,它会起作用吗?
我正在创建一个包含两个 Prop 的组件。第一个是字符串列表,例如['string1', 'string2'] 第二个是字符串列表,例如[['string1arr1' ,'string2arr1'],
我有一个契约(Contract)如下: [DataContract] public class MyObj { [DataMember(IsRequired=true)] public
Protobuf-Net ProtoMember“IsRequired”属性的用途是什么? 如果我向文件中已序列化的类添加新属性(成员),会产生什么影响。如果我使用“IsRequired=true”,
假设我定义了这个 PropType: Component.propTypes = { complicatedData: PropTypes.arrayOf( PropTypes.shape
我有一个要序列化的类 [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://xyz.com/schema")] public c
我有一个简单的模型: public class Sample { public bool A { get; set; } [Required] public bool B {
我们可以有一个不允许空值的必需 XmlAttribute 吗?我想在 XmlAttribute 中使用 IsRequired = true 之类的东西。可以吗?我知道 XmlAttribute 有一个
我是 React 的新手,正在尝试定义 PropTypes,但它似乎不再有效了: 下面是我是如何使用它的: React.PropTypes.func.isRequired 下面是我得到的错误: 那么这
在以前的版本为EF5和EF4的项目中,如果属性为null或空字符串,则IsRequired()流利的API方法将引发DbEntityValidationException。在我当前使用EF6的项目中,
问题 如果我有一个特定实体的属性数组并且我正在遍历它们,有什么方法可以检查我在每个循环中迭代的反射类型属性是否配置为 。 IsRequired() 在其对应的实体上? 示例 这个问题必须特别针对 st
我是 React.js 的新手。我正在尝试验证 propTypes,但它显示错误“TypeError:无法读取未定义的属性‘isRequired’”。我将感谢您的建议。 import React fr
我是 React.js 的新手。我正在尝试验证 propTypes,但它显示错误“TypeError:无法读取未定义的属性‘isRequired’”。我将感谢您的建议。 import React fr
我有一个实体属性定义如下 public virtual string Subject { get; set; } 及其映射为 this.Property(t => t.Subject)
我今天在 WCF 契约(Contract)中遇到了这个: [DataMember(IsRequired = true)] public DateTime? LastModified { get; se
我对 react (或者说网络技术)很陌生。我开始构建一个使用不同组件的应用程序。当我浏览文档时,我认为将 isRequired 放在 propTypes 中,会强制用户在使用组件时提供所有 isRe
我有以下组件: import React from 'react' import PropTypes from 'prop-types' const MyComponent = ({ text1, t
我注意到 React 组件有一个 type.propTypes 对象,它将所有 propTypes 作为键。 例如, Component.propTypes = { initialCount: Rea
我正在尝试学习 React,但 PropTypes 即使与 isRequired 一起使用也不会引发任何错误。我是不是做错了什么。 代码是这样的 function SayHello
我是一名优秀的程序员,十分优秀!