Tôi có một thành phần đôi khi sẽ cần được hiển thị dưới dạng một <anchor>
và những lần khác dưới dạng a <div>
. Các prop
tôi đọc để xác định điều này, là this.props.url
.
Nếu nó tồn tại, tôi cần kết xuất thành phần được bao bọc trong một <a href={this.props.url}>
. Nếu không, nó chỉ được hiển thị dưới dạng <div/>
.
Khả thi?
Đây là những gì tôi đang làm ngay bây giờ, nhưng cảm thấy nó có thể được đơn giản hóa:
if (this.props.link) {
return (
<a href={this.props.link}>
<i>
{this.props.count}
</i>
</a>
);
}
return (
<i className={styles.Icon}>
{this.props.count}
</i>
);
CẬP NHẬT:
Đây là khóa cuối cùng. Cảm ơn vì mẹo, @Sulthan !
import React, { Component, PropTypes } from 'react';
import classNames from 'classnames';
export default class CommentCount extends Component {
static propTypes = {
count: PropTypes.number.isRequired,
link: PropTypes.string,
className: PropTypes.string
}
render() {
const styles = require('./CommentCount.css');
const {link, className, count} = this.props;
const iconClasses = classNames({
[styles.Icon]: true,
[className]: !link && className
});
const Icon = (
<i className={iconClasses}>
{count}
</i>
);
if (link) {
const baseClasses = classNames({
[styles.Base]: true,
[className]: className
});
return (
<a href={link} className={baseClasses}>
{Icon}
</a>
);
}
return Icon;
}
}
const baseClasses =
vàoif (this.props.link)
chi nhánh đó . Khi bạn đang sử dụng ES6, vì vậy bạn cũng có thể đơn giản hóa một chút bằngconst {link, className} = this.props;
cách sử dụnglink
vàclassName
dưới dạng các biến cục bộ.