三元运算不适用于 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>)
}
</>
)