问题:如何将此params
数组传递到我的<Post />
组件中并且data
数组被映射?
我的州有两个阵列。 this.state = { data: [], params: [] };
我通过props将它们传递给名为PostList.js的文件。它在map函数中呈现每个帖子(来自数据数组),见下文:
//PostList.js
//.....Removed for brevity....
render(){
// Tried let params = this.props.params; HERE
let socialPostNodes = this.props.data.map(socialPost => {
// Tried let params = this.props.params; HERE
return (
<Post
//I need params = { this.props.params } HERE
messageNumber = { socialPost.message.indexOf('', 1) }
message={ socialPost.message}
uniqueID={ socialPost['_id'] }
key={ socialPost['_id'] } >
{ socialPost.message }
</Post>
)
});
//.....removed for brevity......
我需要将this.props.params
放入<Post />
,以便我可以在Post.js文件中引用它们,但我不知道如何找到答案并且无法找到答案。
如果我尝试在let params = this.props.params;
之后或render()
之前添加return(...
,则无法获得道具。这意味着我无法放置<Post params={ params }... </Post>
。
问题:如何将此params
数组传递到我的<Post />
组件中并且data
数组被映射?
如果你想知道: - 数组中有数据 - 从父组件传递成功 - Post.js文件成功完成了我的需要 - 我是新来的反应犹太人 - 我可以把更多的文件放入,只要问 谢谢!
修改 添加了Post.js文件 它会在帖子消息中查找{{company}},并将其替换为字符串&#39; company&#39;
class Post extends Component {
loadInParams() {
let socialMessage = this.props.message;
if (socialMessage.indexOf("{{company}}") >= 0) {
let newSocialMessage = socialMessage.replace("{{company}}", 'company')
return newSocialMessage
} else {
let newSocialMessage = socialMessage;
return newSocialMessage
}
}
render() {
return (
<div>
<h4> Post { this.props.messageNumber } </h4>
<strong>Post Template: </strong> { this.props.message }
<br />
<strong>Ready Post: </strong>
{ this.loadInParams() }
</div>
)
}
}
答案 0 :(得分:2)
当您输入this
时,map
范围会丢失!但是map
函数允许您提供第二个参数来提供this
上下文。
E.g;
this.props.data.map(socialPost => {
...
}, this);
传入第二个参数将允许您访问父作用域的this
,这意味着this.props.params
现在将具有值。