Javascript 根据状态显示和隐藏元素
我正在为我的应用程序执行搜索栏功能,当没有搜索结果时,我需要显示Javascript 根据状态显示和隐藏元素,javascript,reactjs,Javascript,Reactjs,我正在为我的应用程序执行搜索栏功能,当没有搜索结果时,我需要显示您的搜索条件无效或与之相关的内容 我有这个来显示结果 {!!this.state.value.length && <div> {match} </div> } 像这样的东西怎么样: render(){ 让searchResult=this.state.result?
您的搜索条件无效
或与之相关的内容
我有这个来显示结果
{!!this.state.value.length &&
<div>
{match}
</div>
}
像这样的东西怎么样:
render(){
让searchResult=this.state.result?匹配:(您的搜索条件无效)
返回(
{searchResult}
);
}
编辑: 用我建议的解决方案
尝试更改状态,然后查看
{searchResult}
类似的内容会发生什么情况:
render(){
让searchResult=this.state.result?匹配:(您的搜索条件无效)
返回(
{searchResult}
);
}
编辑: 用我建议的解决方案
尝试更改状态并查看
{searchResult}
不,请查看更新。事实上,这种方式并没有显示结果。有没有可能让它成为一个JSFIDLE,这样我就可以使用它了?没有,看看更新。事实上,这种方式不会显示结果。你有没有可能把它做成一个JSFIDLE,这样我就可以使用它了?
{(!this.state.result.length && !!this.state.value.length) &&
<Paper>Your search criteria is invalid</Paper>
}
class UniversalSearch extends Component {
constructor() {
super();
this.state = {value : '', result: ''};
}
render () {
let searchVal = this._matchPeople(this.state.value),
match = Object.keys(searchVal).map(function(key) {
return <div className="threeColumn"><Paper><div className="maxHeight"><h3>{key}</h3><p>{searchVal[key]}</p></div></Paper></div>;
}),
searchResult = this.state.result ? match : (<Paper>Your search criteria is invalid</Paper>);
return (
<Grid>
<Row>
<Column>
<TextField onChange={this._onChange.bind(this)}
fullWidth={true} floatingLabelText="Universal Search"
onKeyUp={this._changeInput.bind(this)} value={this.state.value} />
{searchResult}
</Column>
</Row>
</Grid>
);
}
_matchPeople = (input) => {
let reg = new RegExp(input.split('').join('\\w*').replace(/\W/, ""), 'i');
let filteredObj = { };
Object.keys(falsyData).forEach(function(key) {
if(key.match(reg)){
filteredObj[key] = falsyData[key];
}
});
return filteredObj;
}
_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});
}
}