Я проверил вашу песочницу.Выглядит как хорошее начало, но вы все испортили.
Вот мой форк вашей песочницы: https://codesandbox.io/embed/staging-fast-rr5k9
Во-первых, не кладите реактивные компоненты в контейнеры, поместите ихв папке компонентов и импортируйте их.
То, что происходило, было то, что у вас была новая <Router>
для каждой вашей страницы.Поэтому я вытащил роутер.Его также не импортируется правильно.Это должно быть
import { BrowserRouter as Router } from "react-router-dom";
Так что вам в значительной степени нужно что-то вроде этого
<div>
<Link to={"/bbc-news"}>BBC</Link>
</div>
<div>
<Link to={"/cnbc"}>CNBC</Link>
</div>
<Switch>
<Route
key={"fbbc-news"}
path="/bbc-news"
render={p => <Channel channelName="BBC" channelString="bbc-news" />}
/>
<Route
key={"cnbc"}
path="/cnbc"
render={p => <Channel channelName="CNBC" channelString="cnbc" />}
/>
</Switch>
</Router>
Где компонент канала отображает то, что находится внутри канала.key
в Route важен, потому что он заставляет React правильно запускать componentDidMount, который вызывает thunk-действие, которое выбирает (тот, который идеален).Затем, чтобы получить доступ к результатам из fetch, которые вы поместили в Redux =>
const mapStateToProps = state => ({ json: state.json });
Вам не нужно много вещей, которые у вас были, поэтому я удалил их, например, onClick, который былпытаясь отреагировать на работу маршрутизаторов