第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

formik 警告,組件正在更改要控制的文本類型的不受控制的輸入

formik 警告,組件正在更改要控制的文本類型的不受控制的輸入

一只萌萌小番薯 2022-06-16 14:59:04
我正在 React JS 中開發(fā)一個(gè)動(dòng)態(tài)表單,當(dāng)用戶單擊 Add 按鈕時(shí),Register 表單被添加到屏幕上。在注冊(cè)表格中,我使用 formik 進(jìn)行驗(yàn)證。表單動(dòng)態(tài)添加成功,但每當(dāng)我開始在輸入框中輸入任何輸入時(shí),我都會(huì)在控制臺(tái)中收到以下錯(cuò)誤:Warning: A component is changing an uncontrolled input of type text to be controlled. Input elements should not switch from uncontrolled to controlled (or vice versa). Decide between using a controlled or uncontrolled input element for the lifetime of the component. 我不確定哪里錯(cuò)了。下面是我的動(dòng)態(tài)表單渲染代碼 -Account.jsimport React, { Component } from 'react';import axios from 'axios';import {    Card, CardBody, CardHeader,Button,Col, Row, Form, Container} from 'reactstrap';import { Formik, Field, ErrorMessage } from 'formik';import WrapperForm from './WrapperForm'class Account extends Component {  state = {    wrapperForm: [{}]  }  constructor(props) {    super(props);  }  addUser = () => {    this.setState((prevState) => ({      wrapperForm: [...prevState.wrapperForm, {}],    }));  }  render() {    let { wrapperForm } = this.state    return (      <Form>        <Container className="themed-container" fluid={true}>          <button type="button" onClick={this.addUser}>Add User</button>          <WrapperForm wrapperForm={wrapperForm} />        </Container>      </Form>    );  }}export default Account;  WrapperForm.jsconst WrapperForm = (props) => {  return (    props.wrapperForm.map((val, idx)=> {      return (        <Formik           key={idx}          initialValues={{            email: props.wrapperForm[idx].email || '',            password: props.wrapperForm[idx].password || '',            firstName: props.wrapperForm[idx].firstName || '',            lastName: props.wrapperForm[idx].lastName || '',            zipCode: props.wrapperForm[idx].zipCode ||  ''          }}        
查看完整描述

3 回答

?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

我找到了一種解決方案,也許它會(huì)對(duì)某人有所幫助。您需要initialValues為 formik 創(chuàng)建動(dòng)態(tài)為:


let passwordId = 'password-'+ idx ;

let firstNameId = 'firstName-'+ idx;

let lastNameId = 'lastName-'+ idx;

let zipCodeId = 'zipCode-'+ idx;


return (

  <Formik 

      key={idx}

      initialValues={{

          email: props.wrapperForm[idx].email || '',

          [passwordId]: props.wrapperForm[idx].password || '',

          [firstNameId]: props.wrapperForm[idx].firstName || '',

          [lastNameId]: props.wrapperForm[idx].lastName || '',

          [zipCodeId]: props.wrapperForm[idx].zipCode ||  ''

      }}

  >

)


查看完整回答
反對(duì) 回復(fù) 2022-06-16
?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

閱讀以上所有評(píng)論真的很有幫助,尤其是在理解 react 中表單元素中不受控制和受控組件之間的基本區(qū)別。但是,在將 InitialValues 作為屬性添加到 Formik 后,我得到了同樣的錯(cuò)誤。這讓我想到了這樣一個(gè)事實(shí),即每當(dāng)反應(yīng)將表單輸入視為不受控制(在 DOM 中控制)并結(jié)合反應(yīng)組件中的狀態(tài)更改功能時(shí),就會(huì)發(fā)生錯(cuò)誤。事實(shí)上,我收到了錯(cuò)誤,因?yàn)樵谖业?react useState 鉤子中初始化的變量名稱與我用作表單輸入鍵的表單上的 name 屬性不同。如果在 Formik 上添加 InitialValues 屬性后出現(xiàn)相同的錯(cuò)誤,則應(yīng)確保您的狀態(tài)變量與每個(gè)表單輸入上的名稱屬性相同。



查看完整回答
反對(duì) 回復(fù) 2022-06-16
?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊

我的表單上有一個(gè)字段,但沒(méi)有相應(yīng)的初始值。一旦我將字段添加到初始值(我使用靜態(tài)值,不必道具),此錯(cuò)誤消息就消失了。

我注意到 ppb 的回答改變了initialValues問(wèn)題中的字段名稱,也許這使它們匹配?

我假設(shè)當(dāng)指定初始值時(shí)組件是受控的,否則不受控制。


查看完整回答
反對(duì) 回復(fù) 2022-06-16
  • 3 回答
  • 0 關(guān)注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)