【发布时间】:2021-03-11 07:45:02
【问题描述】:
为了可视化和清晰的图片,我将首先显示应用程序的屏幕截图。
我正在使用 github api 来获取存储库和用户。简单的。现在 App.tsx 的外观是这样的;
// App.tsx
import React from "react";
import MainSearchPage from "./Components/MainSearchPage";
import Header from "./Components/Header";
import "./Sass/main.scss";
const App: React.FC = () => {
return (
<div className="App">
<Header />
<MainSearchPage />
</div>
);
};
export default App;
这是 MainSearchPage 组件;
// MainSearchPage.tsx
import React, { useContext } from "react";
import { GithubContext } from "../Context/GithubContext";
import searchPc from "../Icons/search-pc.svg";
import SearchResults from "./SearchResults";
const MainSearchPage: React.FC = () => {
const { isSearched } = useContext(GithubContext);
return (
<div>
{isSearched ? (
<SearchResults />
) : (
<div className="blank-search-page">
<div className="blank-search-page__items">
<img src={searchPc} alt="search-pc" />
<p>Search results will appear here</p>
</div>
</div>
)}
</div>
);
};
export default MainSearchPage;
当输入改变时,isSearch 变为真并且 SearchResults 正在呈现。这是问题开始的 SearchResults。
//SearchResults.tsx
import React from "react";
import { Route, BrowserRouter as Router, Switch } from "react-router-dom";
import MainSearchResults from "./MainSearchResults";
import SideBarSearchResults from "./SideBarSearchResults";
import UsersPage from "./UsersPage";
const SearchResults = () => {
return (
<div className="search-results">
<Router>
<SideBarSearchResults />
<Switch>
<Route path="/" component={MainSearchResults} />
<Route path="/search-users" component={UsersPage} />
</Switch>
</Router>
</div>
);
};
export default SearchResults;
所以 MainSearchResults 基本上是右边的 repo 结果。我想侧边栏很明显。当我单击左侧的用户时,UsersPage 是应该呈现的组件。但是当我单击时没有任何反应。网址改变了,就是这样。控制台或任何东西都没有错误。在我设置“isSearched”状态之前它正在工作。但我认为这无关紧要。
侧边栏组件;
//SideBarSearchResults.tsx
import React, { useContext } from "react";
import repositoriesSVG from "../Icons/repositories.svg";
import usersSVG from "../Icons/users.svg";
import bookmarkblackSVG from "../Icons/bookmarkblack.svg";
import { Link } from "react-router-dom";
import { GithubContext } from "../Context/GithubContext";
const SideBarSearchResults: React.FC = () => {
const { repoCount, userCount } = useContext(GithubContext);
return (
<div className="side-bar-search-results">
<Link to="/">
<div className="side-bar-search-results__repositories">
<img src={repositoriesSVG} alt="repo" />
<p className="result-title">Repositories</p>
<p className="quantity">{repoCount ?? 0}</p>
</div>
</Link>
<Link to="/search-users">
<div className="side-bar-search-results__users">
<img src={usersSVG} alt="users" />
<p className="result-title">Users</p>
<p className="quantity">{userCount ?? 0}</p>
</div>
</Link>
<div className="side-bar-search-results__bookmarked ">
<img src={bookmarkblackSVG} alt="bookmarked" />
<Link to="/repo-details">
<p className="result-title">Bookmarked</p>
</Link>
<p className="quantity">15</p>
</div>
</div>
);
};
export default SideBarSearchResults;
【问题讨论】:
-
控制台有错误吗?
-
那么到底是什么问题?筑巢在哪里?或者更确切地说,您指的是什么具体的嵌套(如果有的话)?我看到 1 个路由器、交换机和路由。您的
SideBarSearchResults中的链接(??只是猜测)没有正确路由到UsersPage中的嵌套路由的问题是什么? -
控制台没有错误,什么也没有出现。 url 改变了,就是这样。没有其他事情发生。抱歉,我可能应该将此添加到问题中。
-
啊,我想我现在明白了,点击侧边栏中的“用户”应该路由到
"/search-users"路径,但这不起作用?您可以在问题中包含该侧边栏组件吗? -
@DrewReese 我添加了,是的,网址发生了变化。但没有其他任何变化。如您所见,搜索结果填充用户页面。但我够不着。
标签: javascript reactjs react-router react-router-dom