Reactjs React Js:React.Children.仅应接收单个React元素子元素
我正在使用Reactjs React Js:React.Children.仅应接收单个React元素子元素,reactjs,Reactjs,我正在使用请求进行api调用。get。当我在request.get中设置state时,我得到了这个错误 我的错误:- 16 | },function(err,resp,body){ 17 | var data = JSON.parse(body) 18 | console.log(data) > 19 | that.setState({internship_data:data}) 20 | }) 21 |
请求进行api调用。get
。当我在request.get中设置state时,我得到了这个错误
我的错误:-
16 | },function(err,resp,body){
17 | var data = JSON.parse(body)
18 | console.log(data)
> 19 | that.setState({internship_data:data})
20 | })
21 | }
22 | render(){
我的代码:-
import React,{Component} from 'react'
import '../assets/styles/internship_form.css'
import {Collapse} from 'react-bootstrap'
import request from 'request'
class Support extends Component {
constructor(props){
super(props)
this.state = {
internship_data:null
}
}
componentWillMount(){
const that = this;
var internship_id = this.props.params.id;
var data = null
request.get({
url:`http://www.myapi.com:1441/internshipbuffer/${internship_id}`,
headers:{
'Authorization':`Bearer ${localStorage.getItem('auth-token')}`
}
},function(err,resp,body){
var data = JSON.parse(body)
console.log(data)
that.setState({internship_data:data})
})
}
render(){
return (
<div>
{
this.state.internship_data ? this.renderContent() : this.renderLoading()
}
</div>
)
}
renderLoading = () => {
return (
<div style={{marginTop:'100px'}}>Loading....</div>
)
}
renderContent = () => {
// const that = this;
var data = this.state.internship_data;
return (
<div className="card">
<div className="img-container">
<img alt="Brand Logo" src={data.asset_url} className="img-circle" id="brand-logo" width="50"/>
</div>
<ul className="card-brand-info-container">
<li>{data.brand_name}</li>
<li>Brand manager: {data.brand_manager}</li>
</ul>
<button type="button" className="btn btn-default" id="review-btn" onClick={this.reviewAction} >Review</button>
<button type="button" className="btn btn-default" id="reject-btn" >Reject</button>
<Collapse isOpened={this.state.isOpened} className="hidden-brand-info" >
<div>Title : {data.position_name}</div>
<div>Description : {data.description}</div>
<div>Positions : {data.postions}</div>
<div>Intenship Period : {data.period} </div>
<div>
Benefits :
{/* <ul className="benefits-list">
{data.benefits && data.benefits.map(function(item,i){
return <li key={i} >{i+1}.{item}</li>
})}
</ul> */}
</div>
<div>
Skills & Requirements :
{/* <ul className="skills-list">
{data.benefits.map(function(item,i){
return <li key={i} >{i+1}.{item}</li>
})}
</ul> */}
</div>
<div>
City :
<ul className="city-list">
{/* {
data.city.map(function(item,i){
if (i !== (that.props.data.city.length)-1)
return <li key={i} >{item},</li>
else
return <li key={i} >{item}</li>
})
} */}
</ul>
</div>
<div className="action-btns" >
<button type="button" className="btn btn-default" id="approve-btn" >Approve</button>
<button type="button" className="btn btn-default" id="support-btn" >Support</button>
</div>
</Collapse>
<div id="myModal" className="modal fade" role="dialog">
<div className="modal-dialog">
<div className="modal-content">
<div className="modal-header">
<button type="button" className="close" data-dismiss="modal">×</button>
<h4 className="modal-title">Modal Header</h4>
</div>
<div className="modal-body">
</div>
<div className="modal-footer">
<button type="button" className="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
)
}
}
export default Support
我猜在render方法中有不止一个(主要)组件。根据文档,它应该是呈现方法中的一个主要组件或html标记
class Executioner extends React.Component {
render() {
return React.Children.only(this.props.children)()
}
}
这将返回This.props.children中的唯一子级。如果有多个孩子,它会抛出一个错误,从而使整个应用程序完全停止,以避免懒惰的开发人员试图弄乱我们的组件
请参阅此处的更多信息:
已更新
经过一段时间的调查,我发现问题出在哪里。
组件应该有一个主html节点。您应该将
的内容包装在例如
中,如下所示:
<Collapse isOpened={this.state.isOpened} className="hidden-brand-info" >
<div>
<div>Title : {data.position_name}</div>
<div>Description : {data.description}</div>
<div>Positions : {data.postions}</div>
<div>Intenship Period : {data.period} </div>
<div>
</div>
<div>
</div>
<div>
City :
<ul className="city-list">
</ul>
</div>
<div className="action-btns" >
<button type="button" className="btn btn-default" id="approve-btn" >Approve</button>
<button type="button" className="btn btn-default" id="support-btn" >Support</button>
</div>
</div>
</Collapse>
标题:{data.position_name}
描述:{data.Description}
职位:{data.Positions}
管理期:{data.Period}
城市:
批准
支持
而且它看起来像是
没有isOpened
属性和className
。
您还没有声明一个方法reviewAction
,您尝试在这一行代码中使用该方法:
查看
您的错误与渲染组件有关。请也添加渲染代码。请添加完整错误,并添加数据的日志结果
您应该使用胖箭头函数进行成功回调,以使此
绑定到组件。你不应该做constthat=this代码>@bennygenel。据此编辑。请帮忙。谢谢什么是折叠组件?是从图书馆来的吗?另外,你在代码末尾还有一个额外的{
。这是问题的输入错误吗?你仍然没有添加数据。现在我把我的整个支持组件放在上面。你在谈论什么数据?你现在能提供一个基于编辑的解决方案吗?我已经提供了完整的代码。我无法测试它得到401(未经授权)bundle.js?ba50e4811e0a946d1160:47086{msg:“提供了格式错误的令牌”,代码:4300,状态:401}。能否从var data=JSON.parse(body)粘贴“data”的值?您没有粘贴所有代码,并且缺少了一些位,但我认为问题不在您所指的那一行。您是否尝试删除了render方法之外的所有内容?只是为了确保没有其他原因导致错误。嘿,我复制粘贴了我的整个页面support.jsx
文件。还添加了数据变量que斯蒂恩,让我知道你还需要什么信息。谢谢!是的,知道了。不管怎样,拉特尔发现了,我一开始不想崩溃。现在一切都解决了!谢谢!
<Collapse isOpened={this.state.isOpened} className="hidden-brand-info" >
<div>
<div>Title : {data.position_name}</div>
<div>Description : {data.description}</div>
<div>Positions : {data.postions}</div>
<div>Intenship Period : {data.period} </div>
<div>
</div>
<div>
</div>
<div>
City :
<ul className="city-list">
</ul>
</div>
<div className="action-btns" >
<button type="button" className="btn btn-default" id="approve-btn" >Approve</button>
<button type="button" className="btn btn-default" id="support-btn" >Support</button>
</div>
</div>
</Collapse>