Я пытаюсь вернуть несколько элементов React из вспомогательного метода. Я мог бы решить это, просто переместив какой-то код, но мне интересно, есть ли более чистый способ его решения. У меня есть метод, который возвращает часть метода render
, и что функции должны возвращать как элемент React, так и некоторый текст. Это яснее на примере:
class Foo extends React.Component {
_renderAuthor() {
if (!this.props.author) {
return null;
}
return [
' by ',
<a href={getAuthorUrl(this.props.author)}>{this.props.author}</a>,
]; // Triggers warning: Each child in an array or iterator should have a unique "key" prop.
render() {
return (
<div>
{this.props.title}
{this._renderAuthor()}
</div>
);
}
}
Я знаю, что метод render
должен возвращать ровно 1 элемент React. Использование вспомогательного метода, подобного этому, вызовет предупреждение, и исправление предупреждения (путем добавления ключей) сделает код слишком запутанным. Есть ли чистый способ сделать это, не вызывая предупреждения?
Edit:
Другой вариант использования:
render() {
return (
<div>
{user
? <h2>{user.name}</h2>
<p>{user.info}</p>
: <p>User not found</p>}
</div>
);
}
Изменить 2:
Оказывается, это пока невозможно, я написал около двух обходных путей здесь: https://www.wptutor.io/web/js/react-multiple-elements-without-wrapper