Hello,
I have a problem. I have a search field as an input field. Someone can type in their search query and the cards get updated. All cards are related to a category. Now I want to add the feature that when I click on the category from a card, that this value is passed to the search input field, so that all cards related to this category are displayed.
App.js
import React, {useEffect, useState} from 'react';
import Card from './components/Card'
import './App.css';
export function buttonClick(category = "") {
let buttonSearch = category;
console.log(buttonSearch);
}
function App() {
const [cards, setCards] = useState([]);
const [search, setSearch] = useState("");
const updateSearch = (e: any) => {
setSearch(e.target.value);
console.log(search);
};
useEffect(() => {
getCards();
}, [search]);
async function getCards() {
const response = await fetch(`https://*********-codingchallenge.azurewebsites.net/v2/article?search=${search}`, {method: 'Get'});
const data = await response.json();
setCards(data.records);
console.log(data.records);
}
return (
<div className="App">
<div className="App-header">
<span className="span">
Knowledge Base
</span>
<div>
<input placeholder="Suchen…" className="App-search" type="text" value={search} onChange={updateSearch} />
</div>
</div>
<div className="content">
<div className="content-card">
{cards.map(card => (
<Card
key={card['id']}
title={card['fields']['title']}
teaser={card['fields']['teaser']}
category={card['fields']['category']}/>
))}
</div>
</div>
</div>
);
}
export default App;
Card.js
import React from 'react';
import cardCss from './card.module.css'
import {buttonClick} from '../App'
const Card = ({title = "", teaser = "", category = ""}) => {
return (
<div className={cardCss.card} title={title}>
<div>
<h1 className={cardCss.cardTitle}>{title}</h1>
<div>
<button className={cardCss.button} onClick={() => buttonClick(category)}>{category}</button>
</div>
<div className={cardCss.teaser}>{teaser}</div>
</div>
</div>
);
}
export default Card;