【发布时间】:2020-12-25 20:46:49
【问题描述】:
我正在使用 TypeScript 开发一个基于 React 钩子的功能应用程序,并且我正在使用来自 ant design 的模态。我正在通过模式提交表格的表格。因此,模态框将被多次调用以填充表格的不同行。
问题是,当模态框在第二次、第三次或横向弹出时,它总是带有以前的值。
为了避免这种情况,我在模态中设置了 EnableViewState="false" ,它不起作用。我设置
destroyOnClose={true}。它没有用。在modal documentation 中,它是在destroyOnClose 不起作用时编写的,那么我们需要使用 .但是在哪里定义呢?因为,当我设置为,
<Form onSubmit={props.inputSubmit} preserve={false} 在我的模态表单中,我收到一条错误消息 Type '{ children: Element[]; onSubmit: any; preserve: boolean; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Form>......?
您使用什么来使每次重新加载模态时,它都重新加载为空?我不想在输入的表单值字段中分配状态。是否还有其他选项,例如 destroyOnClose={true} ?
这是我的模态,
<Form onSubmit={props.inputSubmit}>
<Row>
<Col span={10}>
<Form.Item>
<Text strong={true}>Article name: </Text>
</Form.Item>
</Col>
<Col span={12}>
<Form.Item>
<Input
style={{ backgroundColor: '#e6f9ff' }}
name="articleName"
onChange={props.handleArticleModalInput}
/>
</Form.Item>
</Col>
</Row>
</Form>
这里是调用模态的地方,
return (
<>
<ArticleTableModal
destroyOnClose={true}
isVisible={modalVisibilty}
inputSubmit={inputSubmit}
handleCancel={handleCancel}
filledData={fetchedData}
articleNumber={articleNumber}
handleArticleModalInput={handleArticleModalInput}
/>
<Table
pagination={false}
dataSource={articleDataSource}
columns={articleColumns}
scroll={{ y: 400 }}
bordered
/>
</>
)
非常感谢任何帮助。
【问题讨论】:
-
通常情况下,不会每次都创建一个全新的模态对话框窗口。这可能就是你遇到摩擦的原因。建议在父类组件或 useState 钩子(或自定义钩子)中将模态内容保持为状态,并在设置模态时更新该状态。您甚至可以使用卸载逻辑将内容重置为空字符串或其他一些非值。
-
您好@JaredSmith...感谢您尝试帮助我。但是你可以举个例子吗?每当使用输入数据时,我都会将“模态内容作为父类组件中的状态”,我只是不会再次将该值更新回模态。我认为来回通信会使我的应用程序变得繁重。特别是“您甚至可以使用卸载逻辑将内容重置为空字符串或其他非值”是什么意思?
-
在下面查看我的答案。
标签: reactjs typescript react-hooks antd ant-design-pro