【发布时间】:2017-12-15 12:46:45
【问题描述】:
我能够使过滤器工作,但只需使用 es6 的过滤器,但问题是我不知道如何将状态重置回原始源。
通常数据源是API调用,但是当用户从过滤器输入中删除值时,可以避免api调用吗?
const data = [
{
Id: "1",
FirstName: "Luke",
LastName: "Skywalker"
},
{
Id: "2",
FirstName: "Darth",
LastName: "Vader"
},
{
Id: "3",
FirstName: "Leia",
LastName: "Organa"
},
{
Id: "4",
FirstName: "Owen",
LastName: "Lars"
}
];
class App extends React.Component {
constructor() {
super()
this.state = {
data: data
}
}
filterId(e) {
const Id = e.target.value
if (Id) {
this.setState({
data: this.state.data.filter(v => v.Id === Id),
})
} else {
this.setState({
data
})
}
}
render() {
return (
<div style={styles}>
<table>
<th>Id <input type="number" onChange={e => this.filterId(e)} /></th>
<th>Name<input /></th>
{this.state.data.map((o, i) => {
return (
<tr>
<td>{o.Id}</td>
<td>{o.FirstName}</td>
</tr>
)
})}
</table>
</div>
);
}
}
【问题讨论】:
-
一个选项是,将相同的数据存储两次,(originalData,filteredData)两者的初始值将相同,并且始终从 originalData 中过滤数据并在过滤数据中更新。
-
@MayankShukla 是的,我想我明白了!
-
样例:codesandbox.io/s/ko5yk719r,这就是你想要的?
标签: javascript reactjs ecmascript-6