Jest kilka sposobów żeby to osiągnąć. Myślę, że najprostszym jest warunkowe wyświetlanie.
Najpierw dodaj zmienną, przechowując identyfikator komponentu, jaki chcesz wyświetlać (może to być cokolwiek, na przykład "a"/"b", ale ja posłużę się 0/1).
const [componentId, setComponentId] = useState(0);
Teraz możemy założyć, że 0 odpowiada komponentowi <A/>
, a 1 komponentowi <B/>
.
Następnie do przycisków musisz dodać możliwość zmiany komponentu. Zrobimy to za pomocą listenera onClick
.
Na przykład dla przycisku nr1 będzie to wyglądało:
<button onClick={()=>setComponentId(0)}
No i teraz wystarczy to wyświetlić warunkowo.
return(
<div className="test">
{componentId === 0 && (<A/>)}
{componentId === 1 && (<B/>)}
</div>
)
Drugim sposobem jest przypisanie komponentu do zmiennej. Ponownie deklarujemy zmienną przechowującą jakiś identyfikator komponentu do wyświetlenia. Tym razem wykorzystam do tego stringa.
const [componentId, setComponentId] = useState("A");
teraz deklarujemy obiekt, który przechowuje nasze komponenty
const components = {
A: <A/>,
B: <B/>,
}
Analogicznie dodajemy listenery
<button onClick={()=>setComponentId("A")}
Na koniec wyświetlamy odpowiedni komponent
return(
<div className="test">
{ components[componentId] }
</div>
)
Przykłady na CodeSandbox
https://codesandbox.io/s/bold-firefly-fci9jo?file=/src/App.js