![](/img/trans.png)
[英]Objects are not valid as a React child (found: object with keys {…})
[英]objects are not valid as a react child (found object with keys) while passing props from one component to other
我正在將特定的選定URL(數據)從組件(List.js)傳遞到組件(DD.js),DD.js有兩個組件,Left和Right,我想在Left組件中顯示數據,因此左組件的道具,但我收到錯誤消息
對象作為React子對象無效(找到:帶有鍵{url}的對象)
。 如果要渲染子級集合,請改用數組。
DD.js
export default class DD extends Component {
render(){
let data = this.props.location.state
return(
<div className="dd-wrapper">
<div className="left-drawer-wrapper">
<Left url={data}/>
</div>
{/*right side section*/}
</div>
);
}
}
Left.js
export default class Left extends Component{
render(){
let url = this.props.url
return(
<div>
{url}
</div>
);
}
}
List.js
<tbody>
{
this.state.urls.map( (list,i) => {
return(
<tr key={i}>
<td>
<Link to={{pathname:`/service/${this.service_name}/requests`,
state:{url:this.state.urls[i]}}}
onClick={()=>this.selectedUrlHandler(i)}>{list}
</Link>
</td>
<td>{this.service_name}</td>
</tr>
);
})
}
</tbody>
當我執行console.log(url)時,我得到了要求的答案,但是當我刪除它並僅執行{url}時,就會發生錯誤,不確定是怎么回事。
由於url傳遞了一個對象到Left
組件,該對象試圖呈現該URL,因此會出現錯誤。 而是只渲染state
對象的特定屬性,例如
export default class DD extends Component {
render(){
let data = this.props.location.state
return(
<div className="dd-wrapper">
<div className="left-drawer-wrapper">
<Left url={data}/>
</div>
{/*right side section*/}
</div>
);
}
}
export default class Left extends Component{
render(){
let url = this.props.url.value
return(
<div>
{url}
</div>
);
}
}
您不能將對象渲染為react組件中節點的子級。 為此,您可以對對象進行字符串化,即
export default class Left extends Component{
render(){
let url = this.props.url
return(
<div>
{JSON.stringify(url)}
</div>
);
}
}
要么
您可以一次從對象渲染特定的值。
export default class Left extends Component{
render(){
let url = this.props.url
return(
<div>
{url.url1}
{url.url2}
</div>
);
}
}
網址不是字符串,它是一個對象,因此無法在JSX中呈現對象。 您可以通過將其轉換為字符串來進行檢查。
<Left url={JSON.stringify(data)} />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.