欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在react項(xiàng)目中使用antd的form組件,動(dòng)態(tài)設(shè)置input框的值

 更新時(shí)間:2020年10月24日 10:48:50   作者:Deidei☀️  
這篇文章主要介紹了在react項(xiàng)目中使用antd的form組件,動(dòng)態(tài)設(shè)置input框的值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

問(wèn)題:

創(chuàng)建賬號(hào)時(shí),輸入賬號(hào)后不搜索直接保存,提示查詢后,再點(diǎn)搜索就不能搜索這個(gè)賬號(hào)了

原因:

點(diǎn)擊保存之后,對(duì)表單進(jìn)行了驗(yàn)證,導(dǎo)致之后請(qǐng)求的數(shù)據(jù)無(wú)法在更新到input框中,也就是說(shuō)即使在state中有值,也不會(huì)更新initialValue值,就導(dǎo)致搜索后的值不能正確填入input中,表單也就提交不了。

解決辦法:

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

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

ps:

還有一個(gè)問(wèn)題,如果輸入了賬號(hào)進(jìn)行搜索后匹配了name,也填入了input框中。但是又修改了賬號(hào),然后直接提交,就會(huì)導(dǎo)致賬號(hào)和name不匹配,也就是name是存在的,但就不是對(duì)應(yīng)的賬號(hào)了。會(huì)導(dǎo)致保存之后,如果正確的賬號(hào)和name已經(jīng)存在,數(shù)據(jù)庫(kù)出現(xiàn)數(shù)據(jù)存儲(chǔ)問(wèn)題。

解決:

給賬號(hào)輸入的Input框添加onChange事件,來(lái)觸發(fā)如果有改變就清空name框,防止錯(cuò)誤提交

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

記錄一下

補(bǔ)充知識(shí):重新封裝Antd Input組件,解決中文輸入問(wèn)題

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

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 原因是,這個(gè)值發(fā)生變化不會(huì)觸發(fā)重新渲染
 // 不能只使用 flag 原因是,setFlag 是異步的
 const [flag, setFlag] = useState(false)
 // 非中文輸入時(shí)候顯示 value。中文輸入的時(shí)候顯示 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 ? 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項(xiàng)目中使用antd的form組件,動(dòng)態(tài)設(shè)置input框的值就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • React事件監(jiān)聽和State狀態(tài)修改方式

    React事件監(jiān)聽和State狀態(tài)修改方式

    這篇文章主要介紹了React事件監(jiān)聽和State狀態(tài)修改方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React聲明組件的方法總結(jié)

    React聲明組件的方法總結(jié)

    這篇文章主要給大家介紹了react聲明組件有哪幾種方法,各有什么不同,文章通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11
  • react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例

    react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例

    本文主要介紹了react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • React使用api的方式封裝彈窗的示例代碼

    React使用api的方式封裝彈窗的示例代碼

    在現(xiàn)代開發(fā)中的彈窗樣式,經(jīng)常會(huì)是底部一個(gè)叉號(hào)樣式的彈窗,但是目前組件庫(kù)中并無(wú)類似彈窗組件,本文小編給大家介紹了React使用api的方式封裝彈窗的示例,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2024-09-09
  • React子組件調(diào)用父組件方法獲取的數(shù)據(jù)不是最新值的解決方法

    React子組件調(diào)用父組件方法獲取的數(shù)據(jù)不是最新值的解決方法

    這篇文章主要介紹了React子組件調(diào)用父組件方法獲取的數(shù)據(jù)不是最新值的解決方法,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-09-09
  • react18中react-redux狀態(tài)管理的實(shí)現(xiàn)

    react18中react-redux狀態(tài)管理的實(shí)現(xiàn)

    本文主要介紹了react18中react-redux狀態(tài)管理的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • React類組件中super()和super(props)的區(qū)別詳解

    React類組件中super()和super(props)的區(qū)別詳解

    這篇文章給大家詳細(xì)介紹了React類組件中super()和super(props)有什么區(qū)別,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • 如何不使用eject修改create-react-app的配置

    如何不使用eject修改create-react-app的配置

    許多剛開始接觸create-react-app框架的同學(xué),不免都會(huì)有個(gè)疑問(wèn):如何在不執(zhí)行eject操作的同時(shí),修改create-react-app的配置。
    2021-04-04
  • 詳解使用create-react-app添加css modules、sasss和antd

    詳解使用create-react-app添加css modules、sasss和antd

    這篇文章主要介紹了詳解使用create-react-app添加css modules、sasss和antd,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • react如何獲取state的值并更新使用

    react如何獲取state的值并更新使用

    這篇文章主要介紹了react如何獲取state的值并更新使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評(píng)論