问题描述
我尝试了react-helmet。我使用了React路由器,并且想在路线改变时更改标题。使用react-helmet,我可以在选项卡和控制台中更改标题,但遗憾的是在源文件中无法更改。我也想在源代码中更改标题,因为这对于SEO非常重要。 在/public/index.html
中res.show()
+---+--------+--------+-------+-------+
| ID|Category| Date|Points1|Points2|
+---+--------+--------+-------+-------+
|123| A| 3312019| 40| 20|
|123| B| 5302020| 10| 90|
|123| D| 5302020| 0| 80|
|123| A|12312019| 20| 10|
|123| B|12312019| 0| 10|
|123| B| 3312019| 60| 60|
+---+--------+--------+-------+-------+
在src / app.js中
<title>My Title</title>
<Meta name="description" content="This is main page"/>
import React from 'react';
import {
browserRouter as Router,Switch,Route,Link
} from "react-router-dom";
import {Helmet} from "react-helmet";
import Home from './Components/Pages/Home/';
function App() {
return (
<Router>
<Helmet>
<Meta charset="utf-8" />
<title>My title</title>
<Meta name="description" content="This is main page" />
</Helmet>
<Switch>
<Route path="/home">
<Home></Home>
</Route>
</Switch>
</Router>
);
}
export default App;
解决方法
如果您正在寻找SEO,那么create-react-app
不是这里的解决方案。
即使您在社交媒体上共享页面,它也不会显示元数据。
您必须为此进行服务器端渲染。要了解有关服务器端渲染的信息,请在此处进行检查
您只需执行document.title = '...'
即可更改标题。
我将每个顶级组件都放在useEffect
中。
Google和Bing评估JS,因此在JS中设置标题不会给SEO带来不利。但是,其他搜索引擎也可以。
,您应该在react(useContext hook)中使用上下文,并在每个页面中都将在名为pageTitle的变量中设置该标题在应用程序上下文中声明的内容最后,您可以使用头盔包并将其放在您的title标签中
,import React from "react";
class Application extends React.Component {
state={
title:"dynamic title"
}
componentDidMount(){
document.title = this.state.title
}
render () {
return (
<div className="homePage"></div>
);
}
}
,
使用React头盔更改您的网站标题说明。它还有助于SEO。 https://www.npmjs.com/package/react-helmet
import React from "react";
import {Helmet} from "react-helmet";
class Application extends React.Component {
render () {
return (
<div className="application">
<Helmet>
<meta charSet="utf-8" />
<title>My Title</title>
<link rel="canonical" href="http://example.com" />
</Helmet>
...
</div>
);
}
};