为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复“对象作为 React 子对象无效(找到:带有键 {} 的对象)”

如何修复“对象作为 React 子对象无效(找到:带有键 {} 的对象)”

慕妹3146593 2021-08-20 17:25:56
我正在构建一个使用 React、Express、Sequalize 和 mySQL 的全栈网站。到目前为止,它具有注册和登录等功能,但是当我尝试添加错误处理时,它失败了。我收到以下错误消息:Objects are not valid as a React child (found: object with keys {}). If you meant to render a collection of children, use an array instead.    in div (at Login.js:46)    in form (at Login.js:44)    in div (at Login.js:43)    in div (at Login.js:42)    in div (at Login.js:41)    in Login (created by Route)    in Route (at App.js:26)    in Switch (at App.js:23)    in div (at App.js:22)    in div (at App.js:15)    in Router (created by BrowserRouter)    in BrowserRouter (at App.js:14)    in App (at src/index.js:7)当我添加此代码{this.state.errenter code hereors}以显示诸如“找不到用户”之类的错误消息时。import React, { Component } from "react";import { login } from "./UserFunctions";class Login extends Component {  constructor() {    super();    this.state = {      email: "",      password: "",      errors: {}    };    this.onChange = this.onChange.bind(this);    this.onSubmit = this.onSubmit.bind(this);  }  onChange(e) {    this.setState({ [e.target.name]: e.target.value });  }  onSubmit(e) {    e.preventDefault();    const user = {      email: this.state.email,      password: this.state.password    };    login(user, (res, err) => {      if (res) {        this.props.history.push(`/`);      } else {        this.setState({          errors: err        });      }    });  }  render() {    return (      <div className="container">        <div className="row">          <div className="col-md-6 mt-5 mx-auto">            <form noValidate onSubmit={this.onSubmit}>              <h1 className="h3 mb-3 font-weight-normal">Please sign in</h1>              <div className="alert alert-danger" role="alert">                {this.state.errors}              </div>              <div className="form-group">                <label htmlFor="email">Email address</label>                <input                  type="email"                  className="form-control"    );  }}export default Login;感谢有关如何解决此问题的任何指导。
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

为什么会出现此错误?


因为您在执行{this.state.errors}.


如何解决?


首先,您需要提供login函数正在做什么以及是什么err。


您可能只想获取错误字符串,但它err是一个对象。


正如您在错误消息中看到的那样


对象作为 React 子对象无效(找到:带有键 {} 的对象)


这意味着这err是一个空对象。这可以在你声明它的状态中看到


this.state = {

    email: "",

    password: "",

    errors: {} // declaring it as an object

};

您应该将错误声明为字符串


this.state = {

    email: "",

    password: "",

    errors: "" // declaring it as a string

};

或者,这取决于是什么err的的login功能,它应该包含一些字符串来呈现。


查看完整回答
反对 回复 2021-08-20
?
千巷猫影

TA贡献1829条经验 获得超7个赞

err对象很可能是 的一个实例,Error如果是这种情况,它将包含一个message属性。

所以,这应该是你想要显示的 { this.state.errors.message }


查看完整回答
反对 回复 2021-08-20
  • 2 回答
  • 0 关注
  • 339 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号