javascript - 路由更改时组件未加载
问题描述
我正在使用 Preact。我首先尝试了 preact-router,然后尝试了 wouter 进行路由,但是对于一个特定的组件,问题仍然存在。这是定义所有路由的主要条目:
import { h, Component } from 'preact';
import { Route } from "wouter-preact";
import Header from './partials/header';
import Home from './pages/home';
import News from './pages/news';
import Article from './pages/article';
export default class App extends Component {
render() {
return (
<div id="app">
<Header />
<Route path="/"><Home /> </Route> // working perfectly
<Route path="/a/:article"> <Article /> </Route> // not working
<Route path="/n/:newspaper"><News /> </Route> // working
</div>
);
}
}
这是简化的第二个组件,它运行良好:
import { h, Fragment } from 'preact';
import { Link, Route } from "wouter-preact";
import useFetch from '../../utils/ajax';
export default function News() {
const url = window.location.pathname.split('/');
const { data, loading } = useFetch(domain + '/api/v1/news/?newspaper=' + url[2]);
return (
<Fragment>
{loading ? (
// loading indicator
) : (
<main role="main">
<div className="py-5">
<div className="container">
<div className="row">
{data.results.map((nisha, index) => (
<div className="col-sm-6" key={index}>
<div className="col-md-10" >
<div className="card mb-2 shadow-lg" style={{ border: 'none' }} >
<Link href={'/a/' + nisha.slug}>
<img className="card-img-top" src={ nisha.cover_image } alt={ nisha.slug } />
</Link>
<div className="card-body">
// body
<div className="card-footer text-muted">
// footer
</div>
</div>
</div>
</div>
</div>
))}
</div>
</div>
</div>
</main>
)}
</Fragment>
);
}
最后是有问题的组件,当我单击上一个组件的任何链接时,浏览器 url 发生变化但组件未加载(浏览器控制台中没有调试控制台消息)。
export default function Article() {
console.log("loaded");
return (
<div className="main">
<div className="py-5">
<div className="column">
<div>example article</div>
</div>
</div>
</div>
);
}
解决方案
推荐阅读
- python - Validate end_time is bigger than start_time django form
- scala - IntelliJ 警告:“特征中使用的抽象值可能会在初始化期间导致错误”- LAZY abstract val-s 有什么问题?
- php - Symfony 4 - 'Symfony\Component\HttpFoundation\File\File' 的 VichUploader 序列化是不允许的
- python - How to set filter range in backend in filter class in django
- python - 如何保持从 pandas DataFrame 到 dict 的行顺序
- javascript - Error handling with deeply nested async functions
- html - 让导航栏出现中间没有空格
- reactjs - React Native - 相同类型的组件一起滚动
- javascript - 如何在两个不同的 id 上使用 document.getElementById
- c - 没有编译错误、结构和二维数组的问题,而且我从来没有达到我的第二个打印语句?