gpt4 book ai didi

javascript - react : Invariant Violation: Objects are not valid as a React child

转载 作者:行者123 更新时间:2023-12-03 13:56:40 24 4
gpt4 key购买 nike

我正在研究 ReactJS 搜索过滤器,目前,当我输入匹配输入时,我遇到一个问题,应用程序崩溃并给出此错误 对象作为 React 子项无效(发现:带有键 {id, companyName 的对象、帐户、 field 代码、开放日期、网站、主要电话、电子邮件地址、描述、名字、姓氏、事件、职务、部门、办公电话、手机、租户 ID、隐藏、删除、父 ID})。如果您打算渲染子集合,请改用数组。 有人请帮助我如何解决这个问题。我是初学者,没有太多知识来解决这个问题。当我输入一些匹配输入时,第一次应用程序成功渲染,它给了我一个错误。

代码

        class Example extends React.Component {
constructor(props) {
super(props);

this.state = {
Item: 5,
skip: 0
}

this.handleClick = this.handleClick.bind(this);
}

urlParams() {
return `http://localhost:3001/meetups?filter[limit]=${(this.state.Item)}&&filter[skip]=${this.state.skip}`
}

handleClick() {
this.setState({skip: this.state.skip + 1})
}

render() {
return (
<div>
<a href={this.urlParams()}>Example link</a>
<pre>{this.urlParams()}</pre>
<button onClick={this.handleClick}>Change link</button>
</div>
)
}
}


ReactDOM.render(<Example/>, document.querySelector('div#my-example' ))

最佳答案

当您尝试渲染对象而不是 JSX 时,就会发生这种情况。根据我最有根据的猜测,我认为这一行就是问题所在:

let filtered=this.state.data.filter((item)=>{
return item.companyName.indexOf(keyword) > -1
});

Filtered 似乎是一个对象数组,而不是 JSX,因此在渲染方法中:

{this.state.filtered.length === 0 ? dataRender : this.state.filtered}

可能会尝试渲染过滤后的对象,而不是 JSX。

要解决此问题,请尝试添加以下内容:

const filterRender=this.state.filtered.map((dataItem)=>(
<Table.Row key={dataItem.id}>
<Table.Cell>{dataItem.companyName}</Table.Cell>
<Table.Cell>{dataItem.primaryPhone}</Table.Cell>
<Table.Cell>{dataItem.emailAddress}</Table.Cell>
<Table.Cell>{dataItem.venueCode}</Table.Cell>
<Table.Cell>{dataItem.account}</Table.Cell>
<Table.Cell>{dataItem.openDate}</Table.Cell>
<Table.Cell>{dataItem.website}</Table.Cell>
<Table.Cell>{dataItem.description}</Table.Cell>
</Table.Row>
))

并将其更改为:

{this.state.filtered.length === 0 ? dataRender : filterRender}

正如 @jsdeveloper 下面指出的,最好创建一个 renderRow 方法来处理这个问题。

关于javascript - react : Invariant Violation: Objects are not valid as a React child,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55152402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com