三元运算不适用于 reactJS 中的按钮单击?
Ternary operation not working on button click in reactJS?
我有条件地呈现一个按钮,所以当它被点击时,按钮从播放变为暂停。我正在通过三元操作执行此操作,但是,单击按钮时它不会改变。这是我的代码:
...
const isOn = true;
...
return(
...
{isOn ? (<Button className="icon" color="info" type="submit" onClick={startMe}><i className="playicon"/></Button>) : (<Button className="icon" color="info" type="submit" onClick={stopMe}><i className="pauseicon"/></Button>)}
...
)
我真的不明白为什么这不起作用。如果我手动将 isOn
设置为 false
按钮会更改,但如果我单击它则不会。
您不能使用像 const isOn = true;
这样的常规变量,因为它们不会导致重新渲染。你需要使用状态。
const [isOn, setIsOn] = useState(true); // set default to false if you want
const startMe = () => {
setIsOn(true);
}
const stopMe = () => {
setIsOn(false);
}
return(
<>
{isOn
? (<Button className="icon" color="info" type="submit" onClick={startMe}><i className="playicon"/></Button>)
: (<Button className="icon" color="info" type="submit" onClick={stopMe}><i className="pauseicon"/></Button>)
}
</>
)
我有条件地呈现一个按钮,所以当它被点击时,按钮从播放变为暂停。我正在通过三元操作执行此操作,但是,单击按钮时它不会改变。这是我的代码:
...
const isOn = true;
...
return(
...
{isOn ? (<Button className="icon" color="info" type="submit" onClick={startMe}><i className="playicon"/></Button>) : (<Button className="icon" color="info" type="submit" onClick={stopMe}><i className="pauseicon"/></Button>)}
...
)
我真的不明白为什么这不起作用。如果我手动将 isOn
设置为 false
按钮会更改,但如果我单击它则不会。
您不能使用像 const isOn = true;
这样的常规变量,因为它们不会导致重新渲染。你需要使用状态。
const [isOn, setIsOn] = useState(true); // set default to false if you want
const startMe = () => {
setIsOn(true);
}
const stopMe = () => {
setIsOn(false);
}
return(
<>
{isOn
? (<Button className="icon" color="info" type="submit" onClick={startMe}><i className="playicon"/></Button>)
: (<Button className="icon" color="info" type="submit" onClick={stopMe}><i className="pauseicon"/></Button>)
}
</>
)