91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

react項目中如何使用antd的form組件,動態設置input框的值

發布時間:2020-10-26 14:20:54 來源:億速云 閱讀:3136 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關react項目中如何使用antd的form組件,動態設置input框的值,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

問題:

創建賬號時,輸入賬號后不搜索直接保存,提示查詢后,再點搜索就不能搜索這個賬號了

原因:

點擊保存之后,對表單進行了驗證,導致之后請求的數據無法在更新到input框中,也就是說即使在state中有值,也不會更新initialValue值,就導致搜索后的值不能正確填入input中,表單也就提交不了。

解決辦法:

不使用initialValue設置動態更新的值,而是使用 this.props.form.setFieldValue({name:data}); 用于動態更新值,就可以解決了。

if (result.code===0) {
  if (result.data) {
    this.props.form.setFieldsValue({name:result.data});
  }
}

ps:

還有一個問題,如果輸入了賬號進行搜索后匹配了name,也填入了input框中。但是又修改了賬號,然后直接提交,就會導致賬號和name不匹配,也就是name是存在的,但就不是對應的賬號了。會導致保存之后,如果正確的賬號和name已經存在,數據庫出現數據存儲問題。

解決:

給賬號輸入的Input框添加onChange事件,來觸發如果有改變就清空name框,防止錯誤提交

change = (event) => {
 this.props.form.setFieldsValue({name:''});
}

記錄一下

補充知識:重新封裝Antd Input組件,解決中文輸入問題

我就廢話不多說了,大家還是直接看代碼吧~

import React, { useState, useEffect } from 'react'
import { Input } from 'antd'
function BaseHOC(key) {
 return function(props) {
 const { defaultValue, value, onChange } = props
 const hasValue = props.hasOwnProperty('value')
 // 用戶切換到底是顯示 value 還是 input
 // 不能直接用 isOnComposition 原因是,這個值發生變化不會觸發重新渲染
 // 不能只使用 flag 原因是,setFlag 是異步的
 const [flag, setFlag] = useState(false)
 // 非中文輸入時候顯示 value。中文輸入的時候顯示 input
 const [input, setInput] = useState(hasValue ? value : defaultValue)
 useEffect(
  function() {
  if (hasValue && input !== value) {
   setInput(value)
  }
  },
  [value]
 )
 let isOnComposition = false
 function handleChange(e) {
  setInput(e.target.value)
  if (isOnComposition) return
  onChange && onChange(e)
 }
 function handleComposition(e) {
  if ('compositionend' === e.type) {
  isOnComposition = false
  handleChange(e)
  } else {
  isOnComposition = true
  }
  if (flag !== isOnComposition) {
  setFlag(isOnComposition)
  }
 }
 let Component = Input
 if (key) {
  Component = Input[key]
 }
 return (
  <Component
  {...props}
  value={hasValue && !flag &#63; value : input}
  onCompositionStart={handleComposition}
  onCompositionUpdate={handleComposition}
  onCompositionEnd={handleComposition}
  onChange={handleChange}
  />
 )
 }
}

const Component = function(props) {
 return BaseHOC()(props)
}

Component.Search = function(props) {
 return BaseHOC('Search')(props)
}

Component.TextArea = function(props) {
 return BaseHOC('TextArea')(props)
}

Component.Password = Input.Password
Component.Group = Input.Group
export default Component

上述就是小編為大家分享的react項目中如何使用antd的form組件,動態設置input框的值了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

津市市| 冀州市| 开封县| 寻甸| 鄯善县| 眉山市| 绍兴县| 依兰县| 昆明市| 承德市| 曲水县| 拜泉县| 始兴县| 体育| 常州市| 万山特区| 新源县| 遵化市| 亳州市| 铜鼓县| 那坡县| 白玉县| 成都市| 洱源县| 鹤壁市| 苍梧县| 肥城市| 岑巩县| 乌拉特中旗| 宜兴市| 鹰潭市| 涿州市| 行唐县| 桐梓县| 句容市| 搜索| 惠州市| 南丰县| 米泉市| 鄱阳县| 且末县|