无法获取提交函数的输入值

  • 本文关键字:函数 获取 提交 reactjs
  • 更新时间 :
  • 英文 :


我正在尝试在提交时显示输入值。但它似乎不起作用。我没有任何错误,但没有任何渲染。代码出了什么问题?

import React from 'react';
import { Component } from 'react';
class App extends Component {
constructor (props) {
super(props)
this.state = {
city : ""
}

}

handleSubmit = (event)=> {
event.preventDefault();
this.setState ({
city : event.target.value 
})
}

render () {
return (
<div>
<form  onSubmit={this.handleSubmit}>
<input type = "text" city = "city_name" />
<button type="submit">Get Weather</button>
{this.state.city}
</form>
</div>
)
}
}
export default App;
<form 
onSubmit={e=>{
e.preventDefault()
console.log(e.target[0].value)
}}>
<input type="text"/>
<button type="submit">dg</button>
</form>

对我来说效果很好

记住onSubmittarget:
指示提交表单后在哪里显示响应。因此,您可以像普通javascript代码一样获得内部元素(及其相应值(。

const city = event.target.querySelector('input').value
handleSubmit = (event) => {
event.preventDefault();
this.setState ({ city })
}

我想你希望它能像下面这样工作。但这并不是完成任务的唯一途径。

import React from "react";
import { Component } from "react";
class App extends Component {
constructor(props) {
super(props);
this.state = {
city: ""
};
}
handleSubmit = (event) => {
const formData = new FormData(event.currentTarget);
event.preventDefault();
let formDataJson = {};
for (let [key, value] of formData.entries()) {
formDataJson[key] = value;
}
this.setState(formDataJson);
};
render() {
return (
<div>
<form onSubmit={this.handleSubmit}>
<input type="text" name="city" />
<button type="submit">Get Weather</button>
{this.state.city}
</form>
</div>
);
}
}
export default App;

代码沙盒=>https://codesandbox.io/s/eager-oskar-dbhhu?file=/src/App.js

最新更新