【问题标题】:Can't get current location in React无法在 React 中获取当前位置
【发布时间】:2019-04-12 05:29:19
【问题描述】:

我有一个多语言 React 应用程序,它需要以基于当前路径名的语言呈现内容。
例如:
www.englishwebsite.com -> 以英语呈现应用程序
www.frenchwebsite.com -> 以法语呈现应用程序

为了实现这一点,我试图在一个类中获取当前路径名;但这一直失败或给我一个未定义的。在我的代码中,我目前没有看到我尝试过的内容的视觉进展,但我确实尝试找到一种方法来获取道具甚至'location.pathname'。

另外,这是呈现不同语言的正确方法吗?请记住,我是 React 新手。

一个简单的例子

App.js 
class App extends Component {   
   render() {
       return (
           <BrowserRouter>
               <div className='App'>
                   <Route exact path='/' component={Home} />
                </div>
            </BrowserRouter>
       );
   }
}


Home.js
import React, { Component } from 'react';
export class Home extends Component {

render () {
    return (
        <div className='homecontent'>
           <div>
           // if site url is www.englishwebsite.com
           English content
           // else if site url is www.frenchwebsite.com
           French content
           </div>
        </div>
    );
}

【问题讨论】:

  • 提示:window.location.host 的测试值。 pathname.com 之后开始
  • 我会使用模板而不是这种方法。让用户选择一种语言。用[[[my text]]] 包围您的静态文本,并使用不同的模板根据语言切换文本。
  • 谢谢@charlietfl。成功了!
  • @OrthoHomeDefense 我也要试试你的答案,谢谢!
  • 随时!有一些图书馆可以为你做这件事,让你的生活更轻松。我不记得他们的名字对不起。使用模板并动态切换它们允许您编写组件,而无需在每个组件内进行任何渲染逻辑。如果你有数百个会很麻烦,如果你不得不改变它们呢?

标签: javascript reactjs class jsx


【解决方案1】:

window 对象中获取 URL 信息并将其存储在您的 State 中,这样您就可以创建一个 switch case。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    相关资源
    最近更新 更多