首页 >web前端 >js教程 >为什么我在我的 React 应用程序中收到'不变违规:对象作为 React 子项无效”?

为什么我在我的 React 应用程序中收到'不变违规:对象作为 React 子项无效”?

Barbara Streisand
Barbara Streisand原创
2024-11-08 04:00:02318浏览

Why Am I Getting

React 错误:对象作为子对象

在 React 应用程序中,“不变违规:对象作为 React 子对象无效”错误发生在以下情况尝试将对象渲染为组件的子对象。当子级期望一个字符串、数字或元素但收到一个对象时,就会出现此问题。

在给定的示例中,在 render 方法中的地图函数中, this.onItemClick.bind(this, item ) 错误地将整个事件对象作为属性传递给 onClick 处理程序。因此,onClick 事件处理程序接收该事件及其属性作为对象,从而触发错误。

要解决此问题,您可以在地图内使用箭头函数来处理单击事件并传递必要的参数:

render() {
    const items = ['EN', 'IT', 'FR', 'GR', 'RU'].map((item) => {
      return (<li onClick={(e) => this.onItemClick(e, item)} key={item}>{item}</li>);
    });
    return (
      <div>
        ...
                <ul>
                  {items}
                </ul>
         ...
      </div>
    );
  }

或者,如果您希望保留事件对象,则可以仅绑定必要的参数:

render() {
    const items = ['EN', 'IT', 'FR', 'GR', 'RU'].map((item) => {
      return (<li onClick={this.onItemClick.bind(this, item)} key={item}>{item}</li>);
    });
    return (
      <div>
        ...
                <ul>
                  {items}
                </ul>
         ...
      </div>
    );
  }

以上是为什么我在我的 React 应用程序中收到'不变违规:对象作为 React 子项无效”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn