【发布时间】:2021-09-08 21:00:13
【问题描述】:
我是 ReactJS 的新手,我正在做一个简单的联系人管理器。 在我的 InputContact 组件中,我获取联系人的姓名和电子邮件,并在提交后存储在状态变量中并传递给父级。 要检查我的状态变量是否已更新,我检查我的控制台。 问题是,在我提供数据后提交表单后,我在控制台中只看到一个空白行。再次点击提交后,我会在控制台中看到我的输入。
我的问题是 为什么我必须点击两次提交才能看到我的状态变量得到更新??
我的 InputContact.js 文件
import React from 'react'
import { useState } from 'react';
const InputContact = (props)=>{
const [name, setName] = useState('');
const [email, setEmail] = useState('');
const validateInput = (e)=>{
e.preventDefault();
setName(e.target.fname.value);
setEmail(e.target.femail.value);
console.log(name)
props.addContact(name,email);
}
return(
<>
<form onSubmit={validateInput}>
<label>Name
<input type="text" name='fname' ></input>
</label>
<br/>
<label>Email
<input type="text" name='femail' ></input>
</label>
<button type="submit">Save</button>
</form>
</>
)
};
export default InputContact;
我的 App.js 文件是
import Header from './components/Header/Header'
import InputContact from './components/InputContact/InputContact';
import { v4 as uuidv4 } from 'uuid';
function App(){
const [contacts, setContacts] = useState([]);
const addContactFn= (name,email)=>{
setContacts([...contacts, {id:uuidv4(), name:name, email:email}]);
}
return(
<>
<Header />
<InputContact addContact = {addContactFn}/>
</>
)
}
export default App; ```
【问题讨论】:
标签: javascript reactjs jsx