У меня есть список результатов, и каждый раз, когда я нажимаю на результат, он вызывает мою addFunc
функцию, чтобы добавить детали этого конкретного результата как объект в список selectedData
. В настоящее время это работает, когда я console.log
мой selectedData
список.
Я хочу отображать свой selectedData
список, и каждый раз, когда нажимается результат, объект будет добавлен в список , и я хочу, чтобы это отражалось на моем экране.
Я считаю, что для этого мне нужно использовать состояние, но я не очень уверен, как это сделать. Спасибо за помощь.
Сводка моего кода ниже:
let selectedData = [];
const Wrapper = cb => {
return (res, triggerClickAnalytics) => (
<RenderItem
res={res}
triggerClickAnalytics={triggerClickAnalytics}
addFunc={cb}
/>
);
};
class Search extends Component {
constructor(props) {
super(props);
this.addFunc = this.addFunc.bind(this);
}
addFunc(resultdata) {
selectedData = [...selectedData, resultdata]
console.log(selectedData)
}
render() {
return (
<ReactiveList
componentId="results"
dataField="_score"
pagination={true}
react={{
and: ["system", "grouping", "unit", "search"]
}}
size={10}
noResults="No results were found..."
renderItem={Wrapper(this.addFunc)}
/>
</ReactiveBase>
);
}
}
const RenderItem = ({ res, triggerClickAnalytics, addFunc }) => {
let { unit, title, system, score, proposed, id } = {
title: "maker_tag_name",
proposed: "proposed_standard_format",
unit: "units",
system: "system",
score: "_score",
id: "_id"
};
const resultdata = { id, title, system, unit, score, proposed };
return (
<Button
shape="circle"
icon={<CheckOutlined />}
style={{ marginRight: "5px" }}
onClick={() => addFunc(resultdata)}
/>
);
};
Весь код находится в этой песочнице кода: https://codesandbox.io/s/little-framework-spg1w
РЕДАКТИРОВАТЬ:
Мне удалось перевести функцию в состояние, отредактировав свой код как таковой:
constructor(props) {
super(props);
this.addFunc = this.addFunc.bind(this);
this.state = { selectedData:[] }
}
addFunc(resultdata) {
var joined = this.state.selectedData.concat(resultdata);
this.setState({ selectedData: joined })
console.log(joined)
}
Теперь мне нужно вывести результаты в моем массиве joined
на экран. Как мне это сделать?