【发布时间】:2020-09-28 09:45:49
【问题描述】:
我是 react 新手,试图向 api 发送 post 请求并在从 react 应用程序发送 post 请求时获取未定义的状态,这是因为 state 将数据存储为对象。不知道如何解决这个问题。我真的很感激一些帮助。
组件.js
import React, { Component } from 'react'
class Register extends Component {
register () {
// alert('register')
console.warn('state', this.state)
fetch('http://localhost:8000/api/v1/accounts/registration/', {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(this.state)
}).then((result) => {
result.json().then((resp) => {
console.log(resp.data.token)
localStorage.setItem('register', JSON.stringify(resp.data.token))
})
})
}
render () {
return (
<div>
<div>
<label>Email</label>
<input
type='text' placeholder='email'
onChange={(e) => { this.setState({ email: e.target.value }) }}
/><br /><br />
<label>First name</label>
<input
type='text' placeholder='first name'
onChange={(e) => { this.setState({ first_name: e.target.value }) }}
/><br /><br />
<label>Last name</label>
<input
type='text' placeholder='last name'
onChange={(e) => { this.setState({ last_name: e.target.value }) }}
/><br /><br />
<label>Password</label>
<input
type='password' placeholder='password'
onChange={(e) => { this.setState({ password1: e.target.value }) }}
/><br /><br />
<label>Confirm password</label>
<input
type='password' placeholder='confirm password'
onChange={(e) => { this.setState({ password2: e.target.value }) }}
/><br /><br />
<button onClick={() => this.register()}>Register</button>
</div>
</div>
)
}
}
export default Register
谢谢
【问题讨论】:
-
你的状态对象在哪里?
-
那不是状态对象。那是设置状态。请检查我的答案
-
onChange={(e) => { this.setState({ email: e.target.value }) }} 存储状态数据
-
但是当我在控制台上打印它时,它显示为一个对象请看上面的图片
-
@RedBaron 如果在输入改变后调用注册函数不会有问题
标签: reactjs components react-state