进行选择后隐藏或最小化搜索方面组件
Hide or minimise search facet component after making a selection
我们正在构建一个 Reactivesearch 解决方案,并且需要在做出选择后隐藏或最小化一个方面(SingleList 在这种情况下)。
我已经使用自定义渲染函数尝试了以下方法,我可以在其中检查是否已选择值并应用条件渲染:
render: ({
loading,
error,
data,
handleChange,
value
}) => {
if (value !== "") {
return (
<span>{value}</span>
)
}
else {
return (
<ul>
{
data.map(item => (
<li>
<input
type="radio"
value={item.key}
onChange={handleChange}
/>
<span>
<span>{item.key}</span>
<span>{item.doc_count}</span>
</span>
</li>
))
}
</ul>
)
}
}
虽然这可行,但我想知道是否有更简洁的方法,它也避免了对列表进行自定义呈现的需要。基本上,在没有切面选择的情况下使用默认渲染的解决方案。
我认为这是我认为可行的最佳方法。以下是我可能采用的其他方式:
- 使用状态变量
创建状态变量并在选择值时更新状态。您可以使用 onValueChange
执行此操作。每当此状态更改时,您可以为单个列表设置显示 none。
handleUpdate = (value) => {
this.setState({
value,
})
}
render(){
const { value } = this.state;
return (
<div>
<SingleList onValueChange={this.handleUpdate} dataField={} style={value ? { display: 'none' } : { display: 'block'}} />
{value ? <span>{value}</span> : null}
</div>
);
}
这是您可以遵循的另一种方式。但自定义渲染方法是解决此问题的最佳方法。
希望对您有所帮助!
我们正在构建一个 Reactivesearch 解决方案,并且需要在做出选择后隐藏或最小化一个方面(SingleList 在这种情况下)。
我已经使用自定义渲染函数尝试了以下方法,我可以在其中检查是否已选择值并应用条件渲染:
render: ({
loading,
error,
data,
handleChange,
value
}) => {
if (value !== "") {
return (
<span>{value}</span>
)
}
else {
return (
<ul>
{
data.map(item => (
<li>
<input
type="radio"
value={item.key}
onChange={handleChange}
/>
<span>
<span>{item.key}</span>
<span>{item.doc_count}</span>
</span>
</li>
))
}
</ul>
)
}
}
虽然这可行,但我想知道是否有更简洁的方法,它也避免了对列表进行自定义呈现的需要。基本上,在没有切面选择的情况下使用默认渲染的解决方案。
我认为这是我认为可行的最佳方法。以下是我可能采用的其他方式:
- 使用状态变量
创建状态变量并在选择值时更新状态。您可以使用 onValueChange
执行此操作。每当此状态更改时,您可以为单个列表设置显示 none。
handleUpdate = (value) => {
this.setState({
value,
})
}
render(){
const { value } = this.state;
return (
<div>
<SingleList onValueChange={this.handleUpdate} dataField={} style={value ? { display: 'none' } : { display: 'block'}} />
{value ? <span>{value}</span> : null}
</div>
);
}
这是您可以遵循的另一种方式。但自定义渲染方法是解决此问题的最佳方法。
希望对您有所帮助!