[英]React Axios to Rails Knock
我正在嘗試使用React前端中的以下功能將POST請求從axios發送到Rails API:
export function registerUser({ name, email, password }) {
var postdata = JSON.stringify({
auth: {
name, email, password
}
});
return function(dispatch) {
axios.post(`${API_URL}/user_token`, postdata )
.then(response => {
cookie.save('token', response.data.token, { path: '/' });
dispatch({ type: AUTH_USER });
window.location.href = CLIENT_ROOT_URL + '/dashboard';
})
.catch((error) => {
errorHandler(dispatch, error.response, AUTH_ERROR)
});
}
}
Knock gem需要以下格式的請求:
{"auth": {"email": "foo@bar.com", "password": "secret"}}
我當前的函數似乎生成正確的格式(檢查瀏覽器devtools中的請求),但是出現以下錯誤:
未捕獲(承諾)錯誤:對象作為React子對象無效(找到:帶有鍵{data,status,statusText,headers,config,request}的對象)。 如果您打算渲染孩子的集合,請改用數組或使用React附加組件中的createFragment(object)包裝對象。 檢查
Register
的渲染方法。
class Register extends Component {
handleFormSubmit(formProps) {
this.props.registerUser(formProps);
}
renderAlert() {
if(this.props.errorMessage) {
return (
<div>
<span><strong>Error!</strong> {this.props.errorMessage}</span>
</div>
);
}
}
render() {
const { handleSubmit } = this.props;
return (
<form onSubmit={handleSubmit(this.handleFormSubmit.bind(this))}>
{this.renderAlert()}
<div className="row">
<div className="col-md-6">
<label>Name</label>
<Field name="name" className="form-control" component={renderField} type="text" />
</div>
</div>
<div className="row">
<div className="col-md-12">
<label>Email</label>
<Field name="email" className="form-control" component={renderField} type="text" />
</div>
</div>
<div className="row">
<div className="col-md-12">
<label>Password</label>
<Field name="password" className="form-control" component={renderField} type="password" />
</div>
</div>
<button type="submit" className="btn btn-primary">Register</button>
</form>
);
}
}
該錯誤是由代碼中的以下行引起的
errorHandler(dispatch, error.response, AUTH_ERROR)
提出的例外清楚地說明了這一點。 代替設置error.response
,嘗試使用error.response中的實際數據。 例如error.response.data
。 另外,您可以嘗試用字符串替換error.response
並查看其行為,然后從error.response.data
引用所需的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.