【发布时间】:2019-09-05 21:54:38
【问题描述】:
我开始学习 reactjs,我已经使用 react 语义 UI 创建了 react 表,我编写的任何代码都适用于控制台日志,但在 UI 中不显示过滤器数据
在此箭头函数中,我将使用 console.log 选项查看过滤器名称值。 请检查下面的代码以获得更多理解。
filterList = e => {
}
import React, { Component } from 'react';
import { Table, Grid, Header, Button, Input } from 'semantic-ui-react'
import { Link } from 'react-router-dom';
export default class ProjectDashBoardList extends Component {
constructor(props){
super(props);
let presets = {
projectListArray: []
}
this.state = {
filterData: [],
value: ""
}
this.state = presets;
}
handleChange = e => {
this.setState({
filterData: this.state.projectListArray
});
};
filterList = e => {
const filterDataName = this.state.projectListArray.filter(item => {
return ( item.customer_name.toLowerCase().search(e.target.value.toLowerCase()) !== -1 );
});
this.setState({ filterData: filterDataName });
console.log('Filter Customer name:', filterDataName);
};
render(){
const filterDataName = this.state.projectListArray
return(
<div>
<form>
<Input icon='search' placeholder='Search by name.' onClick={this.handleChange} onChange={this.filterList} className="searchfield" />
</form>
<Table celled selectable >
<Table.Header>
<Table.Row>
<Table.HeaderCell className="headId">Serial No</Table.HeaderCell>
<Table.HeaderCell>Customer</Table.HeaderCell>
<Table.HeaderCell>Project No</Table.HeaderCell>
<Table.HeaderCell>Start Date</Table.HeaderCell>
<Table.HeaderCell>Action</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
{ filterDataName.map((item, index) =>
<Table.Row key={item.id} className="btnHover">
<Table.Cell>{item.id}</Table.Cell>
<Table.Cell >
<Link to={`./customer-details/${item.id}`}>{item.customer_name}</Link>
</Table.Cell>
<Table.Cell>{item.proj_id}</Table.Cell>
<Table.Cell>{item.start_date}</Table.Cell>
<Table.Cell>
<Button positive onClick={item.skp_snap_url}>Download</Button>
<Button negative onClick={this.projectRemove(item)}>Delete</Button>
</Table.Cell>
</Table.Row>)}
</Table.Body>
</Table>
</div>
)
}
}
当我在搜索框中输入名称时,我想在表格中显示过滤器值。
【问题讨论】:
-
你能提供codepen/sanbox链接吗?这会很有帮助
-
@nayan-patil 您正在过滤并将数据设置为名为
filterData的state variable,但在渲染中您使用的是不同的state variable(这是未过滤的数据集)this.state.projectListArray,将const filterDataName = this.state.projectListArray替换为const filterDataName = this.state.filterData -
@Anuja in const filterDataName = this.state.projectListArray 我正在从数据库中获取值并显示表中的数据,如果我更改此设置,则代码无法正常工作。请检查handleChange箭头功能。
-
@NayanPatil 只需维护
unfiltered变量中的所有数据projectListArray并将其复制到filterData变量中,一开始,使用filterData渲染<Table.Row/>s。过滤projectListArray并将其设置为“filterData”,就像您所做的那样。 -
@Anuja 你能把你现在说的任何东西写成代码,这样我就会明白这一点,我按照我的理解试过了,但它不起作用。
标签: reactjs