【发布时间】:2019-09-27 02:48:22
【问题描述】:
我最近从基于 javascript 的 react 迁移到 Typescript-react。所以这对我来说是新的。
我注意到 Typescript 有自己的 props 验证方法,使用 interface。我的问题是:
- 是否仍然需要使用 PropTypes(来自 prop-types 包)?
- 如何为道具制作“isRequired”?如果没有定义道具,我想让它出错。
- 如何为道具设置默认值?如果未定义道具,我想使用该默认值。
这是我的简单代码。下面的代码有效:
import * as React from "react";
// [Question 1] Create an object PropTypes, is this still necessary ?
import * as PropTypes from "prop-types";
// [Question 2] how to use isRequired for this prop ?
interface Props {
text: String;
active: Boolean;
}
const NavBarMenu = (props: Props) => {
// [Question 3] How to make a default value for prop?
return (
<li className="nav-item">
<a className={props.active ? "nav-link active" : "nav-link"} data-toggle="tab" href="#" role="tab">
{props.text}
</a>
</li>
);
};
NavBarMenu.propTypes = {
text: PropTypes.string.isRequired,
active: PropTypes.bool
};
export default NavBarMenu;
【问题讨论】:
-
请尽量关注每个问题的一个问题。它使网站保持美观和可搜索。带有“子问题”的问题意味着有其他用户无法轻易找到的内容。我已在主要问题上标记为重复。问题 2 和 3 应形成单独的问题。
-
@spender 我的错……对不起。我认为这里的所有答案都很棒,我还阅读了您发布的链接,发现它们很有用。感谢您的所有努力。我现在很清楚了。
标签: javascript reactjs typescript