我有一個React,Redux和Node項目,它有許多內部和外部鏈接。我想讓它在同一頁面打開內部鏈接,並在新標籤中打開外部鏈接。任何幫助或建議表示讚賞,React + React路由器,處理所有鏈接以在新選項卡中打開
0
A
回答
0
外部鏈接應定義爲a
元素,而不是Link
元素,以便您可以使用target="_blank"
在新選項卡中打開鏈接。
1
您可以創建一個包裝組件,它決定鏈接是否是外部鏈接,並使用合適的道具呈現該元素。
以這種方式實現它可以提高可重用性。
爲什麼可重用性會提高?這裏舉幾個例子:
- 試想一下,在開始的時候,你有20個外部URL和手動管理他們的道具(不含包裝組件)。稍後,您決定爲每個外部網址添加一個新的道具,並且您必須手動將其更改爲20個位置。
- URL來自API響應,您必須將它們列在多個組件中。沒有包裝組件 - 你會重複決定URL是否是外部的邏輯。
下面是一個包裝部件的例子:
// Define the Link wrapper component
class Link extends React.Component{
constructor(props) {
super(props);
this.state = {
target: props.target || this.getTarget(props.href)
};
}
getTarget(url) {
const siteDomain = 'stackoverflow.com';
const isExternal = (url.indexOf(siteDomain) === -1);
if (isExternal) return '_blank';
return '_self';
}
render() {
const props = Object.assign(this.props, ...this.state);
return <a {...props}>{this.props.children}</a>
}
}
// Use the Link wrapper
class Example extends React.Component{
render() {
return <Link href="http://google.com/">This is an external link</Link>
}
}
相關問題
- 1. 在新選項卡中打開鏈接,只有新選項卡
- 2. 在新選項卡中打開鏈接
- 3. Create-React-App:路由器在鏈接
- 4. Ext.js - 在新選項卡中打開所有外部鏈接
- 5. 瀏覽器選項在新選項卡中打開鏈接
- 6. 用jQuery打開新選項卡中的所有鏈接
- 7. React路由器與React v0.14.3
- 8. 如何打開在新選項卡中打開鏈接?
- 9. React路由器選項卡 - 保持組件安裝
- 10. 在Rails控制器的新選項卡中打開url鏈接
- 11. 只有在新選項卡中打開鏈接才能工作?
- 12. AngularJS - 在通過控制器進行有條件路由時,在新選項卡中打開鏈接
- 13. React路由器v4.1.1
- 14. 在新選項卡中打開給定頁面上的所有超鏈接
- 15. 路由與react-router-dom在父容器中打開
- 16. 在新選項卡中打開新鏈接
- 17. 在新選項卡中打開相同頁面,但在當前選項卡中打開新鏈接
- 18. 使用React中的onClick處理程序維護href「在新選項卡中打開」
- 19. React路由器顯示所有路由的一個組件(頭)
- 20. React路由器在重新加載時工作,但沒有點擊鏈接
- 21. 使用React路由器與react-rails gem
- 22. 如何在瀏覽器的新選項卡中打開路由在laravel中?
- 23. 需要在ie8中的新選項卡中打開鏈接!
- 24. 如何使FPDF中的鏈接在新選項卡中打開
- 25. 在PHP echo聲明中的新選項卡中打開鏈接
- 26. 在新選項卡中打開特定div中的鏈接
- 27. AngularJS UI路由器 - 在新瀏覽器選項卡中打開數據狀態
- 28. React路由器V4更新URL但不刷新(React,Redux)
- 29. Joomla - 是否有可能在控制器的新選項卡中打開鏈接
- 30. jquery選項卡,打開選項卡中的鏈接
的([在在Firefox新分頁開啓連結]可能的複製http://stackoverflow.com/questions/1716645/open-links-在新選項卡功能於火狐) – raven