我想在 ResultCard 中显示用户点击的详细信息。
当用户单击结果卡中的 url 时,我想根据在我的弹性搜索集群(res)中找到的结果,用呈现的 html 替换 divs 内容(当前显示的结果)。
我尝试添加 onclick 属性,但没有任何反应。Reactivesearch 文档没有列出这个属性。
当然,我可以在 ResultCard 的 url 属性中传递参数并将用户重定向到另一个页面,但页面将完全重新加载(使用 index.js 中定义的菜单和页脚)
我认为创建具有状态镜像的父组件在 div 中当前显示的子组件是要走的路。
但是,当用户点击结果卡时,如何运行 javascript 来设置状态?
import React, { Component } from 'react';
import { ReactiveBase, CategorySearch, SingleRange, ResultCard } from '@appbaseio/reactivesearch';
class App extends Component {
render() {
return (
<ReactiveBase
app="artists"
url="https://admin:xxxxxxx@node1.searchevolution.com:9200"
type="_doc">
<div style={{ display: "flex", "flexDirection": "row" }}>
<div style={{ display: "flex", "flexDirection": "column", "width": "40%" }}>
<CategorySearch
componentId="searchbox"
dataField="nom"
categoryField="occupations.keyword"
type="artists"
placeholder="Search for Artists, Painter, Sculptor, Photographs"
style={{
padding: "5px",
"marginTop": "10px"
}}
/>
</div>
<ResultCard
componentId="result"
dataField="nom"
title="Results"
from={0}
size={6}
pagination={true}
onclick="alert('Message à afficher');"
react={{
and: ["searchbox"]
}}
onData={(res) => {
return {
image: "data:image/png;base64,iVBORw0KGgoA",
title: res.occupations,
description: res.nom,
url: "/details/" + res
}
}}
style={{
"width": "60%",
"textAlign": "center"
}}
/>
</div>
</ReactiveBase>
);
}
}
export default App;
预期的结果是使用来自另一个组件(尚未编码)的呈现的 html 更改 div 内容。