reactjs - 反应组件中显示的陈旧数据
问题描述
我刚刚开始学习反应,并且正在研究 POC。但是,我面临一个奇怪的问题。
我有两个组件,Perfumes 和 PerfumeSearchResults。Perfumes 是在循环中重复使用 PerfumeSearchResults 的组件。
下面是代码:
class Perfumes extends React.Component{
render(){
return(
<div>
<div>Perfumes Page</div>
<div>
<input type="text" value={this.state.perfumeName} onChange={this.handleChange}/>
</div>
<div>{
this.state.filteredPerfumes.map(function(perfume){
return <div>{perfume.perfumeName} <PerfumeSearchResults value={perfume}/></div>
})}
</div>
</div>
);
}
}
class PerfumeSearchResults extends React.Component{
constructor(props){
super(props);
this.perfume = props.value;
}
render(){
return(
<div>
<span>{this.perfume.perfumeName}</span>
<span>{this.perfume.perfumeId}</span>
<span>{this.perfume.house}</span>
</div>
);
}
}
我面临的问题是,当我过滤结果时,我在 {perfume.perfumeName} 中获得了正确的数据。但是,子组件一起向我展示了不同的数据。
就像,如果香水数组是 [Cool Water, Polo Blue, Polo Black],当我输入 black 时,香水.perfumeName 显示 polo black,但香水搜索结果组件显示的是 Cool water。
我不确定我在这里缺少什么。由于定义了构造函数,我假设在每次修改后,PerfumeSearchResult 组件将被破坏并重建,相关数据将传递给它们。
解决方案
构造函数只会被调用一次。因此,如果道具更改,this.perfume
将不会更新。您不需要将道具分配给任何东西,只需在组件中使用它们即可。
class PerfumeSearchResults extends React.Component{
render(){
return(
<div>
<span>{this.props.value.perfumeName}</span>
<span>{this.props.value.perfumeId}</span>
<span>{this.props.value.house}</span>
</div>
);
}
}
推荐阅读
- javascript - 如何对 ORM (sequelizejs) 查询添加条件检查?
- asp.net - 为什么我一直让您与此网站的连接不是私密的
- python - 将数据框隔离到另一个数据框
- json - Dialogflow:从 webhook 向用户打印 JSON 响应
- tls1.2 - TLSv1.2 使用 IBM Java 1.6 收到命运警报:handshak_failure
- r - 删除字符变量开头的“The”,并将其移至末尾
- ios - dyld_shared_cache_extract_dylibs 尝试在 iPhone 上运行应用程序时失败
- algolia - Algolia:使用可能值的字符串数组按字符串数组属性过滤索引
- python - 试图从python中的列列表中创建一个布尔掩码
- angular - 父子组件通信