【发布时间】:2015-09-02 21:00:21
【问题描述】:
我正在尝试为我的应用程序提供搜索功能,这是我的第一个 React 应用程序,还没有看到优势
我有这个代码
let falsyData = [
{'hello': 'greet'},
{'Travel': 'traveling'},
{'Heart': 'corazon'},
{'Earth': 'tierra'},
{'Hills': 'a name'},
{'Blackjack': 'game'},
{'Casino': 'gambling'}
];
class UniversalSearch extends Component {
constructor() {
super();
this.state = {value : '', result: ''};
}
render () {
let searchRes = this._matchPeople(this.state.value),
match = searchRes.map(function(item) {
return <Column><Paper>{item}</Paper></Column>;
});
return (
<Grid>
<Row>
<Column>
<TextField onChange={this._onChange.bind(this)}
onKeyUp={this._changeInput.bind(this)} value={this.state.value} />
{!!this.state.value.length &&
<Row>
{match}
</Row>
}
</Column>
</Row>
</Grid>
);
}
_matchPeople = (input) => {
let reg = new RegExp(input.split('').join('\\w*').replace(/\W/, ""), 'i');
return falsyData.map(function(person) {
for (let key in person) {
if (key.match(reg)) {
return key;
}
}
});
}
_changeInput = (val) => {
let autoCompleteResult = this._matchPeople(this.state.value);
if (autoCompleteResult.length) {
this.setState({result: autoCompleteResult.join(' ')});
};
}
_onChange = (event) => {
this.setState({value: event.target.value});
}
}
我需要通过falsyData 数组进行搜索,到目前为止,这里是我正在实现的搜索功能
_matchPeople = (input) => {
let reg = new RegExp(input.split('').join('\\w*').replace(/\W/, ""), 'i');
return falsyData.map(function(person) {
for (let key in person) {
if (key.match(reg)) {
return key;
}
}
});
}
_changeInput = (val) => {
let autoCompleteResult = this._matchPeople(this.state.value);
if (autoCompleteResult.length) {
this.setState({result: autoCompleteResult.join(' ')});
};
}
_onChange = (event) => {
this.setState({value: event.target.value});
}
我的应用正在返回我正在搜索的 falsyData 条件,但只返回属性而不是属性,那么,我应该如何访问这些属性?
例如:如果我输入hello,hello 字应该从falsyData 返回并打印到屏幕上,这没关系,但是如果我想用他的属性打印hello 呢?如您所见,是“问候”吗?
而且,我收到了这个错误:
警告:propType 失败:
Row中未指定必需的 propchildren。检查UniversalSearch的渲染方法。
我不认识你们,但在过去的 3 个小时里我一直在用这个,使用 Angular 只需 | filter: 就可以了。
如果有人可以提供帮助,请提前致谢。
【问题讨论】:
标签: javascript reactjs