本文的目的是介绍同时使用AntDesignofReact中Mention和Form的详细情况,特别关注antd两个form互不影响的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一
本文的目的是介绍同时使用 Ant Design of React 中 Mention 和 Form 的详细情况,特别关注antd两个form互不影响 的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解同时使用 Ant Design of React 中 Mention 和 Form 的机会,同时也不会遗漏关于Ant Design Mobile Ant Design Mobile Ant Design 移动端设计规范的 React 实现、Ant Design of React如何实现打印、Ant Design Pro 使用更多 Ant Design of Vue 组件、Ant Design使用Form.useForm()获取数据域报错 的知识。
本文目录一览:
使用场景,在一个列表中,点击每一行会弹出一个表单,通过修改表单数据并提交来修改这一行的数据,其中某个数据的填写需要通过Mention实现动态提示及自动补全的功能。
具体效果为:
遇到的问题:
1、希望所需要的提示和自动补全的内容不同,实际场景类似于ide中函数提示(包含参数和返回值以及用法等提示)和函数补全(只补全函数名)的功能。
Ant Design的Mention组件提供了Nav可以实现这个功能,但是实际使用中发现会报错,经查发现为Ant Design的一个,升级版本解决。
2、然后遇到问题,发现suggestions使用了Nav数组之后,不能通过输入自动动态查询,具体表现为
经查原因为,将生成suggestions的计算写到了引用Mention的地方:
const suggestions ='张三 男 18 会计',value:'张三''李四 女 21 审计',value:'李四''王五 男 33 总监',value:'王五'<={{ width: '100%'={ suggestions.map( (x) => ) }>
解决方法,将计算过程提到外面去……
3、点击不同数据行的时候,弹出表单数据不更新,也就是表单的 initialValue 不生效
在 react 生命周期 componentwillReceiveProps(nextProps) 中把 Mention 的数据更新。
需要注意的地方是 Mention 的 value 不是 string,需要在多处通过 toString 和 toContentState 进行转换。
行吧,困扰了两天的bug好像写出来也没什么东西……QAQ怪我蠢……
完整代码:
import React from 'react'
'antd'==const suggestions =<span> [
,,
<span>]
class EditForm extends React.Component {
onSave = () =><span> {
<span>this.props.form.validateFields((err,values) =><span> {
<span>if (!<span>err) {
<span>this<span>.props.onSave({ ...values,person: toString(values.person) })
<span>this<span>.props.form.resetFields()
<span>this.props.form.setFieldsValue({person: toContentState(''<span>)})
console.log(toString(<span>this.props.form.getFieldValue('person'<span>)))
}
});
}
onCancel = () =><span> {
<span>this<span>.props.onCancel()
<span>//<span> 重置为初始值 initialValue 防止点击不同区域出现数据不刷新的情况(although...i dont kNow why...
<span>this<span>.props.form.resetFields()
}
<span>//<span> 在接受 props 时调用 无论 nextProps 和 this.props 是否相等
<span>//<span> 首先要在表单隐藏变为显示的时候赋值 其次 只有当前已经存在显示值的时候才调用 否则没意义 也会存在 getFiledsValue 未注册情况
<span> componentwillReceiveProps(nextProps) {
<span>if (nextProps.visible === <span>true && <span>this.props.visible === <span>false && <span>this<span>.props.record) {
<span>this<span>.props.form.setFieldsValue({person: toContentState(nextProps.record.person)})
}
}
render() {
<span>//<span> console.log(this.props)
const { record,visible,onCancel } = <span>this<span>.props;
<span>if (!record) <span>return <span>null<span>;
const { getFieldDecorator } = <span>this<span>.props.form;
<span>return<span> (
<<span>Modal
visible=<span>{visible}
title="编辑事件"<span>
okText="保存"<span>
onCancel={<span>this<span>.onCancel}
onOk={<span>this<span>.onSave}
>
<Form layout="vertical" onSubmit={<span>this.handleSubmit}>
'event'required: ,message: '请输入事件!'
'person'required: ,message: '请输入相关人员!'<={{ width: '100%'=/>
const WrappedEditForm =<span> Form.create()(EditForm);
class EventTable extends React.Component {
state =<span> {
visible: <span>false<span>,record: <span>null<span>,index: 0<span>
}
columns =<span> [
{
title: '操作'<span>,key: 'action'<span>,render: (text,record,index) =>
{ >编辑
,width: 200'事件''event''event'=>
{text}
,{
title: '相关人员''person''person'200='1''早餐''@组长''2''午餐''3''晚餐'= () =>.setState({visible: = (values) =>.setState({visible: .data[.state.index].event =.data[.state.index].person =
.columns} dataSource={
.data} style={{ width: 600 }}/>
.state.visible} record={={.onCancel} onSave={.onSave} />
export <span>default EventTable
总结
以上是小编为你收集整理的同时使用 Ant Design of React 中 Mention 和 Form全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
Ant Design相关文章
ant design vue - 表格 (待更
过滤器:就是筛选filters: [ { text: '全部', value: '' }, { text: '通过', value: '通过' }, { text: '拒绝', value: '拒绝' }, { text: '待处理', value: '待处理' }, ], onFilter: (value, record) => record.c...
ant design vue Grid 柵格化 响应式 (待续)
好处: 就是可以实现 响应式 拉伸行(row) 列(col)col要直接在row下基本理解:span="多少" //最大24格子 一行是24格子 一个 row 里面的col 的span加起来24就占满了<a-row> <a-col :span="12">col-12</a-col> <a-col :span="12">col-12</a-col> <a-col :sp...
ant 使用安装 按需加载
创好vue 项目npm 下载antnpm i --save ant-design-vue@next完整引入main文件下添加import Antd from 'ant-design-vue';import 'ant-design-vue/dist/antd.css';.use(Antd)这样就ok了使用的时候就是正常复制代码使用按需引用...
antd input 密码框 报错问题
外面套个from 标签就好了。
react自主设计表单验证(类比antDesign)
antDesign表单函数配置分析用getFieldDecorator包起来的高阶组件进行扩展getFieldDecorator(name,options)(component)对组件进行name注册,传入opotions配置以及回调里传入底层组件component自定义表单验证思路:用装饰器来扩展底部组件在装饰器里写入对事件的处理
AntDesign 学习笔记(二)axios使用
之前在vue页面中引入axios使用,本篇在mainjs中引入1、mainjs中引入axios,设置基础urlimportaxiosfrom'axios'axios.defaults.baseURL='https://localhost:8080/'Vue.prototype.axios=axios2、在vue页面中,注意axios前需要加this.methods:{login(){letthat
react中实现原生enter/回车事件及antdesign组件实现方式
先直接上核心代码:this.goToHomePage换成自己逻辑自己写的时候直接把this.goToHmoPage()换成自己的逻辑就行了,还有注意一点的是: 需要传个空函数,不然会报错在componentWillMount移除事件监听是防止浪费内存影响性能。最后在antdesign实现enter回车的方式如下: htmlT
基于SpringBoot+AntDesign的快速开发平台,JeecgBoot 2.0.2 版本发布
Jeecg-Boot是一款基于SpringBoot+代码生成器的快速开发平台!采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT。强大的代码生成器让前端和后台代码一键生成,不需要写任何代码,保持jeecg一贯的强大,绝对是全栈开发福音!!JeecgBoot在提高UI能力的同时,降低了前后分离的开发
热门文章
• ant design vue - 表格 (待更 • ant design vue Grid 柵格化 响应式 (待 • ant 使用安装 按需加载 • antd input 密码框 报错问题 • react自主设计表单验证(类比antDesign • AntDesign 学习笔记(二)axios使用 • react中实现原生enter/回车事件及antde • 基于SpringBoot+AntDesign的快速开发平 • Ant Design Vue分页Pagination • ant-design-vue 表单验证详解
热门标签更多
HTMLreactjsCSSNode.jsangulartypescriptvue.jsreact-natispringkotlinAPIseleniumtensorflowbashangularJSexpressxcodematplotlibflaskHibernatedictionaryrailscocoswebnpmreact-hookmongoosegoogle-appformswpfRestwebpackunit-testihttpclassfileNext.jsJsHTML5bootstrap-
Ant Design Mobile Ant Design Mobile Ant Design 移动端设计规范的 React 实现 Ant Design Mobile
Ant Design Mobile 介绍
Ant Design Mobile
Ant Design 移动端设计规范,一个基于
Preact/React/React Native 的 UI 组件库。antd-mobile 是 Ant Design 的移动规范的 React
实现,服务于蚂蚁及口碑无线业务。
适用场景
Ant Design Mobile
Ant Design Mobile 官网
https://mobile.ant.design/index-cn
Ant Design of React如何实现打印 前端使用Ant Design框架。那该框架有关于自动连接打印机进行打印的组件吗?或者说该如何引入组件实现打印功能!!望有高人指点下!谢谢
Ant Design Pro 使用更多 Ant Design of Vue 组件
因为 Ant Design Pro 是按需加载的,Ant Design of Vue 中的部分组件未默认引用,故需要手工添加到项目中。
这里以 Pagination 这个分页组件为例。首先在项目中找到文件 \src\core\lazy_lib\components_use.js
增加如下两个代码 import {
.....
// 增加
Pagination
} from ''ant-design-vue''
// 增加
Vue.use(Pagination)
至此,页面中即可使用该组件
Ant Design框架下在使用Form.useForm()获取数据域出现如下错误:
Error: Invalid hook call. Hooks can only be called inside of the body of a function component.
This Could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app See https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.
最后反复查看Ant Design文档发现有如下提示:
我使用的是 class component,因此接下来使用ref获取数据域:
经过测试,成功通过ref获取表单数据,并进行重置等操作。
综上所述,在使用class component情况下,应该使用ref方法替代Form.useForm()。
我们今天的关于同时使用 Ant Design of React 中 Mention 和 Form 和antd两个form互不影响 的分享就到这里,谢谢您的阅读,如果想了解更多关于Ant Design Mobile Ant Design Mobile Ant Design 移动端设计规范的 React 实现、Ant Design of React如何实现打印、Ant Design Pro 使用更多 Ant Design of Vue 组件、Ant Design使用Form.useForm()获取数据域报错 的相关信息,可以在本站进行搜索。