render(){
return(
{startDate && endDate ? <Link to=`/event/${event_id}?start=${startDate}&?end=${endDate}` target="_blank"> : <Link to=`/event/${event_id}` target="_blank">
<div>lots of my content here</div>
</Link>
)
}
这段代码可能很容易理解,但它不起作用,它有snytax错误。我可以使用onClick,因为我想在新标签中打开链接。如何使用Link
if else?任何线索?
答案 0 :(得分:1)
你有一些错误
return
应该只返回一个组件见这里
render() {
return (
<div>
{
startDate && endDate
?
<Link to=`/event/${event_id}?start=${startDate}&?end=${endDate}` target="_blank"/>
:
<Link to=`/event/${event_id}` target="_blank"/>
}
<div>lots of my content here</div>
</div>
)
}
答案 1 :(得分:0)
render(){
let link = `/event/${event_id}`;
link = (startDate && endDate) ? `${link}?start=${startDate}&?end=${endDate}`;
return(
<Link to={link} target="_blank">
<div>lots of my content here</div>
</Link>
)
}
答案 2 :(得分:0)
将您链接到{}
中的语句,并且您还需要关闭第一个Link
标记,并使用}
render(){
return(
{startDate && endDate ? <Link to={`/event/${event_id}?start=${startDate}&?end=${endDate}`} target="_blank"><div>lots of my content here</div></Link> : <Link to={`/event/${event_id}`} target="_blank">
<div>lots of my content here</div>
</Link>
}
)
}
但是,如果Link标签具有相同的内容。仅在链接目标上进行三元表达更有意义
render(){
var link = (startDate && endDate) ? `/event/${event_id}?start=${startDate}&?end=${endDate}` : `/event/${event_id}`;
return(
<Link to={link} target="_blank">
<div>lots of my content here</div>
</Link>
}
)
}
答案 3 :(得分:0)
我会这样做,
render() {
const linkTo = startDate && endDate
? `/event/${event_id}?start=${startDate}&?end=${endDate}`
: `/event/${event_id}`;
return (
<Link to={linkTo} target="_blank">
<div>lots of my content here</div>
</Link>
);
}
答案 4 :(得分:0)
您遇到了问题,因为您不能将if-else
用于反应组件的一半,而只能用于整个组件或其内部组件。
这意味着您无法使用此类代码:
{condition ? <Link to="1"> : <Link to="2">
<div>lots of my content here</div>
</Link>}
&#13;
而你可以使用这样的变体:
const content = <div>lots of my content here</div>
{condition ? <Link to="1">{content}</Link> : <Link to="2">{content}</Link/>}
&#13;
或者您可以使用to
参数的条件,正如其他答案中提出的那样