Реагировать - выражения должны иметь один родительский элемент?
Я относительно новичок в реагировании, и мне интересно, какой здесь стандарт.
представьте, что у меня есть react-router, как этот:
<Router history={history}>
<Route path="/" component={App}>
<Route path="home component={Home} />
<Route path="about" component={About} />
<Route path="inbox" component={Inbox} />
<Route path="contacts" component={Contacts} />
</Route>
</Router>
и теперь я хочу удалить два маршрута, если prop.mail
установлено значение false
, Так что разумный способ сделать это будет выглядеть так:
<Router history={history}>
<Route path="/" component={App}>
<Route path="home component={Home} />
<Route path="about" component={About} />
{ if.this.props.mail ?
<Route path="inbox" component={Inbox} />
<Route path="contacts" component={Contacts} />
: null }
</Route>
</Router>
но есть 2 маршрута, и React возвращает ошибку:
выражения должны иметь один родительский элемент.
Я не хочу использовать несколько ifs здесь. Каков предпочтительный способ справиться с этим?
1 ответов
поместите их в массив (также назначьте ключи):
{ if.this.props.mail ?
[
<Route key={0} path="inbox" component={Inbox} />,
<Route key={1} path="contacts" component={Contacts} />
]
: null }
С последней версией React вы можете попробовать React.Fragment
кроме того, вот так:
{ if.this.props.mail ?
<React.Fragment>
<Route path="inbox" component={Inbox} />,
<Route path="contacts" component={Contacts} />
</React.Fragment>
: null }