我试图用axios(NodeJS,ReactJS)发布数据,但我最终得到这个错误
这是我的发布代码
axios({
method: 'post',
url: '/api/signup',
data:
{
username: this.state.username,
name: this.state.name,
surname: this.state.surname,
email: this.state.email,
password: this.state.password,
confirm_password: this.state.confirm_password,
}
})
.then(res => res.data)
.then(url => window.location.href = url.location)
.catch(error => this.setState({errorBol: true, errorMessage: error}))
和我的nodeJS代码
router.post('/', async (req,res)=>{
const username = req.body.username;
const name = req.body.name;
const surname = req.body.surname;
const email = req.body.email;
const password = req.body.password;
const confirm_password = req.body.confirm_password;
console.log(username)
console.log(name)
console.log(surname)
console.log(email)
console.log(password)
console.log(confirm_password)
res.status(200).send({location: '/'})
})
我有这样的/ api / signup配置
router.use('/api/main', require('./sinupfilename'))
所以问题不在router.post('/')中
关于问题:
我正在实施邮政申请表格提交并对表格进行验证,它运作完美但是当我点击提交按钮时它给我一个错误,所以如果有人知道线索,我会很高兴听到它
看起来像issue is not with axios but with your render function
。当您尝试渲染任何对象而不是有效的反应元素时,会出现上述问题。
问题可能出在setState for errorMessage变量。尝试打印errorMessage或typeof errorMessage以获取更多信息。它不应该是一个对象。
如果你读axaz的javascript object
,那么错误就是official documentation。
您需要提取错误消息并将其设置在errorMessage变量中。它应该工作正常。根据文档,同样可以这样做:
const err = ""
if (error.response) {
err = error.response.data
} else if (error.request) {
err = error.request.response
} else {
err = error.message
}
this.setState({errorBol: true, errorMessage: err})
基本上,任何需要渲染的东西都必须是有效的反应元素,如字符串,html标签,数字而不是对象。因此,您需要确保渲染的内容,它需要是一个有效的反应元素。你可以阅读更多关于它here
希望它有所帮助,回复任何疑虑。