在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ react動(dòng)態(tài)修改title,title不變

react動(dòng)態(tài)修改title,title不變

問題描述

React項(xiàng)目中,想根據(jù)路由動(dòng)態(tài)修改title的值,但是寫了后,發(fā)現(xiàn)title不變。
【問題1:】這是怎么回事?
【問題2:】要如何修改?

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

百度了下,說在路由中寫一個(gè)setTitle的函數(shù),然后根據(jù)路由采用onEnter調(diào)用setTitle方法傳title過去,即可

相關(guān)代碼

router/index.js
const setTitle = (title) => {
    document.title = title
};
export const routes = [{
    path: '/xxx1',
    title: '測試1',
    component: () => import('xxx')
},{
    path: '/xxx2',
    title: '測試2',
    component: () => import('xxx')
},{
    path: '/xxx3',
    title: '測試3',
    component: () => import('xxx')
},
...
]
const router = (props) => (
    <Router>
        <Switch>
            ...
            {routes.map(({ path, title, component }, index) => (
                <Route
                    key={index}
                    exact
                    path={path}
                    onEnter={setTitle(title)}
                    component={component}
                />
            ))}
            ...
        </Switch>
    </Router>
)

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

在瀏覽器中的標(biāo)題欄中一直顯示【測試3】,控制臺(tái)打印setTitle中的title,是打印了三次,分別是:測試1,測試2,測試3
個(gè)人分析是遍歷三次,最后一次對前面進(jìn)行了覆蓋
【問題】:那我要如何才能實(shí)現(xiàn)在不同的界面,顯示不同的title?

還各位大神請指點(diǎn)下,謝謝了

回答
編輯回答
疚幼

使用的是react Router哪個(gè)版本,新版本沒有相應(yīng)的onEnter事件了
onEnter={setTitle(title)} 是直接調(diào)用,顯示的肯定是數(shù)組最后一個(gè)title,
onEnter={() => setTitle(title)} 一直是默認(rèn)的就表示沒有觸發(fā)onEnter事件
改變title可以放到Link被點(diǎn)擊的時(shí)候或者在組件的componentDidMount修改

2018年7月7日 19:12
編輯回答
失魂人

試一試這樣

onEnter={() => setTitle(title)}
2017年1月30日 08:44
編輯回答
尤禮
 <Route onEnter={() => document.title = title} />
2017年10月30日 04:59
編輯回答
初心
onEnter={setTitle(title)}

這樣直接傳參數(shù)應(yīng)該不可行,試下

onEnter={() => setTitle(title)}
2017年9月9日 17:20