使用三元运算符的条件渲染和 onClick 事件
Conditional rendering and onClick event using ternary operator
我正在尝试显示有条件呈现的元素的警报 onclick 但 onclick 事件不起作用我从三元运算符中取出代码并且它有效但我似乎找不到原因为什么它在三元运算符中不起作用。
import React from 'react';
import HomeIcon from '../Images/home.svg'
import HomeIconBlue from '../Images/home-blue.svg';
function Menubar(props) {
const style = {
borderTop: "3px solid #2D79BB",
color: "#2D79BB",
}
return (
<div className="menu-bar">
<div className="home-icon">
{
(props.active === 'home') ?
<span style={style} onClick={alert('hey')}>
<img src={HomeIconBlue} alt="home" />
<p>Home</p>
</span> :
<span>
<img src={HomeIcon} alt="home" />
<p>Home</p>
</span>
}
</div>
)
}
export default Menubar
尝试从
更改 onClick
onClick={alert('hey')}
至
onClick={() => alert('hey')}
您保留 onClick 事件的元素尚未呈现,请将其保留在第二个元素上。
当前正在渲染的那个
return (
<div className="menu-bar">
<div className="home-icon">
{
(props.active === 'home') ?
<span style={style} >
<img src={HomeIconBlue} alt="home" />
<p>Home</p>
</span> :
<span onClick={alert('hey')}>
<img src={HomeIcon} alt="home" />
<p>Home</p>
</span>
}
</div>
)
我正在尝试显示有条件呈现的元素的警报 onclick 但 onclick 事件不起作用我从三元运算符中取出代码并且它有效但我似乎找不到原因为什么它在三元运算符中不起作用。
import React from 'react';
import HomeIcon from '../Images/home.svg'
import HomeIconBlue from '../Images/home-blue.svg';
function Menubar(props) {
const style = {
borderTop: "3px solid #2D79BB",
color: "#2D79BB",
}
return (
<div className="menu-bar">
<div className="home-icon">
{
(props.active === 'home') ?
<span style={style} onClick={alert('hey')}>
<img src={HomeIconBlue} alt="home" />
<p>Home</p>
</span> :
<span>
<img src={HomeIcon} alt="home" />
<p>Home</p>
</span>
}
</div>
)
}
export default Menubar
尝试从
更改 onClickonClick={alert('hey')}
至
onClick={() => alert('hey')}
您保留 onClick 事件的元素尚未呈现,请将其保留在第二个元素上。 当前正在渲染的那个
return (
<div className="menu-bar">
<div className="home-icon">
{
(props.active === 'home') ?
<span style={style} >
<img src={HomeIconBlue} alt="home" />
<p>Home</p>
</span> :
<span onClick={alert('hey')}>
<img src={HomeIcon} alt="home" />
<p>Home</p>
</span>
}
</div>
)