Tất cả các câu trả lời khác đang hoạt động tốt nhưng tôi sẽ thêm một số, bởi vì làm điều này:
- Nó an toàn hơn một chút. Ngay cả khi việc kiểm tra kiểu của bạn không thành công, bạn vẫn trả về một thành phần thích hợp.
- Nó là tuyên bố nhiều hơn. Bất cứ ai bằng cách nhìn vào thành phần này có thể thấy những gì nó có thể trở lại.
- Ví dụ, nó linh hoạt hơn thay vì 'h1', 'h2', ... đối với loại Tiêu đề của bạn, bạn có thể có một số khái niệm trừu tượng khác 'sm', 'lg' hoặc 'chính', 'phụ'
Thành phần Heading:
import React from 'react';
const elements = {
h1: 'h1',
h2: 'h2',
h3: 'h3',
h4: 'h4',
h5: 'h5',
h6: 'h6',
};
function Heading({ type, children, ...props }) {
return React.createElement(
elements[type] || elements.h1,
props,
children
);
}
Heading.defaultProps = {
type: 'h1',
};
export default Heading;
Mà bạn có thể sử dụng nó như thế nào
<Heading type="h1">Some Heading</Heading>
hoặc bạn có thể có một khái niệm trừu tượng khác, ví dụ bạn có thể định nghĩa một đạo cụ kích thước như:
import React from 'react';
const elements = {
xl: 'h1',
lg: 'h2',
rg: 'h3',
sm: 'h4',
xs: 'h5',
xxs: 'h6',
};
function Heading({ size, children }) {
return React.createElement(
elements[size] || elements.rg,
props,
children
);
}
Heading.defaultProps = {
size: 'rg',
};
export default Heading;
Mà bạn có thể sử dụng nó như thế nào
<Heading size="sm">Some Heading</Heading>