原文链接:https://bobbyhadz.com/blog/react-optional-props-typescript[1]
作者:Borislav Hadzhiev[2]
正文从这开始~
在React TypeScript中设置具有默认值的可选props
:
props
标记为可选。props
进行解构时提供默认值。// App.tsx
interface EmployeeProps {
name?: string; // 👈️ marked optional
age?: number; // 👈️ marked optional
country: string; // 👈️ required (no question mark)
}
function Employee({name = 'Alice', age = 30, country}: EmployeeProps) {
return (
<div>
<h2>{name}</h2>
<h2>{age}</h2>
<h2>{country}</h2>
</div>
);
}
export default function App() {
return (
<div>
<Employee name="Bob" age={29} country="Belgium" />
<hr />
<Employee country="Austria" />
</div>
);
}
我们标记了name
和age
属性作为可选的。这意味着不管有没有提供这两个属性,组件都是可使用的。
如果可选prop
的值没有指定,会默认设置为undefined
。没有为prop
指定值,和设置值为undefined
的效果是相同的。
我们还在Employee
组件的定义中为name
和age
参数设置了默认值。
function Employee({name = 'Alice', age = 30, country}: EmployeeProps) {
return (
<div>
<h2>{name}</h2>
<h2>{age}</h2>
<h2>{country}</h2>
</div>
);
}
对象中的name
属性的默认值为Alice
,所以如果不提供name
prop,它将被赋值为Alice
。
你也可以通过把props
所有属性都标记为可选,来将整个props
对象设置为可选。
// App.tsx
interface EmployeeProps {
name?: string; // 👈️ all marked optional
age?: number;
country?: string;
}
function Employee({
name = 'Alice',
age = 30,
country = 'Austria',
}: EmployeeProps) {
return (
<div>
<h2>{name}</h2>
<h2>{age}</h2>
<h2>{country}</h2>
</div>
);
}
export default function App() {
return (
<div>
<Employee name="Bob" age={29} country="Belgium" />
<hr />
<Employee />
</div>
);
}
EmployeeProps
类型中的所有属性都被标记为可选的,因此该组件可以在不提供任何props
的情况下使用。
我们为Employee
组件的所有props
设置了默认值,所以如果有任何props
被省略了,就会使用默认值。
[1]
https://bobbyhadz.com/blog/react-optional-props-typescript: https://bobbyhadz.com/blog/react-optional-props-typescript
[2]
Borislav Hadzhiev: https://bobbyhadz.com/about
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有