Reactjs 道具返回未定义
我使用map在对象数组上循环以填充列表。当我生成正确数量的列表时,我的循环似乎正在工作,但是我无法通过道具访问数据。似乎我所有的道具都没有定义 路径:Reactjs 道具返回未定义,reactjs,Reactjs,我使用map在对象数组上循环以填充列表。当我生成正确数量的列表时,我的循环似乎正在工作,但是我无法通过道具访问数据。似乎我所有的道具都没有定义 路径:组件 function CareerPosition(props) { return ( <li> {props.uniqueId} {props.companyName} {props.positionTitle} </li> ) } 问题在于在对象中设置关键点的方式: if
组件
function CareerPosition(props) {
return (
<li>
{props.uniqueId}
{props.companyName}
{props.positionTitle}
</li>
)
}
问题在于在对象中设置关键点的方式:
if (careerHistoryPositions) {
const newData = careerHistoryPositions.map((position) =>
({
'position.uniqueId': position.uniqueId || '',
'position.company': position.company || '',
'position.title': position.title || ''
}));
this.setState({
data: newData
})
}
您正在向所有键添加额外的单词“position”,请删除该单词,否则您需要访问map
中的值,如下所示:
position["position.company"]
if (careerHistoryPositions) {
const newData = careerHistoryPositions.map((position) =>
({
'uniqueId': position.uniqueId || '',
'company': position.company || '',
'title': position.title || ''
}));
this.setState({
data: newData
})
}
const careerPositions = this.state.data.map((position) =>
<CareerPosition
key={position.uniqueId}
companyName={position.company}
positionTitle={position.title}
uniqueId={position.uniqueId}
/>
);
删除位置并按如下方式书写:
position["position.company"]
if (careerHistoryPositions) {
const newData = careerHistoryPositions.map((position) =>
({
'uniqueId': position.uniqueId || '',
'company': position.company || '',
'title': position.title || ''
}));
this.setState({
data: newData
})
}
const careerPositions = this.state.data.map((position) =>
<CareerPosition
key={position.uniqueId}
companyName={position.company}
positionTitle={position.title}
uniqueId={position.uniqueId}
/>
);
然后访问地图中的值,如下所示:
position["position.company"]
if (careerHistoryPositions) {
const newData = careerHistoryPositions.map((position) =>
({
'uniqueId': position.uniqueId || '',
'company': position.company || '',
'title': position.title || ''
}));
this.setState({
data: newData
})
}
const careerPositions = this.state.data.map((position) =>
<CareerPosition
key={position.uniqueId}
companyName={position.company}
positionTitle={position.title}
uniqueId={position.uniqueId}
/>
);
const careerPositions=this.state.data.map((位置)=>
);
问题在于,在componentWillReceiveProps中,您使用键position.title
etx设置状态,但您仅以title
试试这个
componentWillReceiveProps(nextProps) {
const profileCandidateCollection = nextProps.profileCandidate;
const profileCandidateCollectionId = profileCandidateCollection._id;
const careerHistoryPositions = profileCandidateCollection && profileCandidateCollection.careerHistoryPositions;
console.log("componentWillReceiveProps: ", careerHistoryPositions);
if (careerHistoryPositions) {
const newData = careerHistoryPositions.map((position) =>
({
'uniqueId': position.uniqueId || '',
'company': position.company || '',
'title': position.title || ''
}));
this.setState({
data: newData
})
}
}
renderCareerPositions(props) {
if(0 < this.state.data.length) {
const careerPositions = this.state.data.map((position) =>
<CareerPosition
key={position.uniqueId}
companyName={position.company}
positionTitle={position.positionTitle}
uniqueId={position.uniqueId}
/>
);
return (
<ul>
{careerPositions}
</ul>
)
}
}
组件将接收道具(下一步){
const profileCandidateCollection=nextProps.profileCandidate;
const profileCandidateCollectionId=profileCandidateCollection.\u id;
常量careerHistoryPositions=profileCandidateCollection&&profileCandidateCollection.careerHistoryPositions;
日志(“组件将接收道具:”,careerHistoryPositions);
if(careerHistoryPositions){
const newData=careerHistoryPositions.map((位置)=>
({
“uniqueId”:position.uniqueId | |”,
“公司”:position.company | |”,
“标题”:position.title | |”
}));
这是我的国家({
数据:新数据
})
}
}
渲染重建(道具){
if(0
);
返回(
{careerPositions}
)
}
}
我以为我在用组件willreceiveprops(nextrops)
更新它们。如果我在renderCareerPositions
中console.log(this.state.data)
它将返回所有objects@bp123最初的问题只是一个打字错误,所以我认为有人因此而投了反对票。