javascript - React.js 函数组件的按钮 onClick 处理程序只工作一次
问题描述
我的pages/index.js
:
import Flyout from '../components/flyout'
import { useState } from 'react'
export default function Home() {
const [flyouts, setFlyouts] = useState(<></>)
const [testFlyout, setTestFlyout] = useState('')
function showTestFlyout() {
此语句仅有效一次。
setFlyouts(<Flyout>{testFlyout}</Flyout>)
}
return (
<>
<input value={testFlyout} onChange={function (event) {
setTestFlyout(event.target.value)
}} />
<button onClick={showTestFlyout}>popup</button>
{flyouts}
</>
)
}
我的components/flyout.js
:
import styles from './flyout.module.css'
import ReactDOM from 'react-dom'
import { useState } from 'react';
function Flyout({ title, children }) {
const [flyoutClassName, setFlyoutClassName] = useState(styles.flyout)
var closeFlyout = () => {
这也只有效一次:
setFlyoutClassName(`${styles.flyout} ${styles.closedFlyout}`)
}
const [flyout, setFlyout] = useState(
<div className={flyoutClassName}>
<div>
<p>{title}</p>
<button onClick={closeFlyout}>×</button>
</div>
<div>{children}</div>
<div></div>
</div>
)
return (
<>{flyout}</>
);
}
function showFlyout(...) {
...
}
export default Flyout
export { showFlyout, Flyout }
这个网络应用程序基于 React.js,我正在尝试弹出包含输入值的不同弹出窗口,但该句柄仅在我第一次单击时有效,并且在我第一次单击后它不起作用点击。
那么为什么所有的setState()
工作只做一次呢?
解决方案
推荐阅读
- python-3.x - 如何使用除行(轴= 1)以外的参数将自定义函数传递给dataframe.apply
- arrays - Atollic TrueStudio (Eclipse) Debug Expressions 数组切割成零件
- python - 20newsgroup 数据集上的增强频率。TypeError:'int' 对象不可迭代
- javascript - 如何调试开发滑块以滚动浏览所有图像的错误?
- javascript - 如何将html id设置为变量
- python - 手势识别问题
- c++ - 如何在 Windows 10 操作系统上使用 Bazel 调试 c++ 代码
- docker - docker中的传输权限被拒绝
- kubernetes - Kubernetes LoadBalancer 最佳实践:避免 NodePort?
- c# - 为什么 StreamWriter.Flush() 在这里给出 ObjectDisposedExeption?