最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react國際化react-intl的使用

 更新時間:2021年05月06日 11:24:43   作者:slowCoder  
這篇文章主要介紹了react國際化react-intl的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

react怎么實現(xiàn)國際化?react-intl插件提供了一套實現(xiàn)react國際化的方法,具體實現(xiàn)如下~~

一 搭建react環(huán)境和下載相應插件

默認你已經(jīng)安裝了nodejs 如果沒有裝的百度裝下 這里不再細講

利用react官方腳手架搭建react項目,已經(jīng)存在有的react項目也可忽略搭建這步;然后下載相關(guān)依賴 react-intl

npx create-react-app react-intl-demo  
npm i react-intl -S

等待下載完成

找到項目根目錄下的src文件夾 在里面新建一個叫l(wèi)ocale的文件夾 存放語言包設置的文件;這里只實現(xiàn)中英文切換,后續(xù)其他語言的都是一樣的操作

在這里插入圖片描述 

二 寫相關(guān)的配置文件

找到locale的intl.js文件 引入相關(guān)的插件 進行封裝暴露出去

import React, { useContext } from 'react'
import { IntlProvider } from 'react-intl' // 包裹在需要語言國際化的組件的最外層,和react-redux的Provider一樣 讓組件和組件內(nèi)的子組件都能使用react-intl提供的api和方法
import { mainContext } from '../reducer' // 這里使用的是useReducer 簡單的在根目錄下創(chuàng)建一個 來控制語言的全局狀態(tài)維護
import zh_CN from './cn' // 中文包
import en_US from './en' // 英文包

const Inter = (props) => {
    // 獲取默認的語言設置 也可以配合一些全局狀態(tài)管理進行結(jié)合使用 如redux Mobx或者react自身提供的useReducer等
  const { state } = useContext(mainContext)
  const chooseLocale = (val) => { 
    let _val = val || navigator.language.split('_')[0]
    switch (_val) {
      case 'en':
        return en_US
      case 'zh':
        return zh_CN
      default:
        return zh_CN
    }
  }
  let locale = state.locale // 獲取 locale
  let { children } = props
  // 包裹子組件 讓子組件共享react-intl的api 實現(xiàn)多語言
  return (
    <IntlProvider
      key={locale}
      locale={locale}
      defaultLocale='zh'
      messages={chooseLocale(locale)}
    >
      {children}
    </IntlProvider>
  )
}

export default Inter

cn.js

const zh_CN = {
    start: '開始',
    switch: '切換'
  }
  export default zh_CN
  

en.js

const en_US = {
    start: 'start',
    switch: 'switch'
  }
  export default en_US
  

reducer.js (src目錄下新建一個)

import React, { useReducer } from 'react'
const CHANGE_LOCALE = 'CHANGE_LOCALE'

const mainContext = React.createContext()

const reducer = (state, action) => {
  switch (action.type) {
    case CHANGE_LOCALE:
      return { ...state, locale: action.locale || 'zh' }
    default:
      return state
  }
}

const ContextProvider = (props) => {
  const [state, dispatch] = useReducer(reducer, {
    locale: 'zh'
  })
  return (
    <mainContext.Provider value={{ state, dispatch }}>
      {props.children}
    </mainContext.Provider>
  )
}

export { reducer, mainContext, ContextProvider }

三 在App.js引入相關(guān)文件并使用

App.js

import './App.css';
import { ContextProvider } from './reducer'
import Inter from './locale/intl'
import View from './views'

function App() {
  return (
    <ContextProvider>
      <Inter>
        <View />
      </Inter>
    </ContextProvider>
  );
}
export default App;

四 新建views目錄下面使用相關(guān)的插件和api實現(xiàn)國際化

views新建一個 index.jsx 文件試試效果

import react, { useContext} from 'react'
import { mainContext } from '../reducer'
import { FormattedMessage } from 'react-intl'
 
function Index() {
    const { dispatch, state } = useContext(mainContext)
    const { locale } = state
    const changeLang = () => { // 改變狀態(tài)里的 語言 進行切換
        dispatch({
            type: 'CHANGE_LOCALE',
            locale: locale === 'zh' ? 'en' : 'zh'
        })
    }
    return (
        <div>
           <div>
            <FormattedMessage id="start" ></FormattedMessage>
           </div>
           <div>
                <button onClick={changeLang} > <FormattedMessage id="switch" ></FormattedMessage></button>
           </div>
        </div>
    );
}
export default Index;

最終目錄 紅框為新增

在這里插入圖片描述

就這樣 一個簡單的react國際化就完成了!
可以去試一試,如果項目有需要也可以按照這種移植進去
本次的demo已上傳GitHub:github地址 可自行克隆運行

到此這篇關(guān)于react國際化react-intl的使用的文章就介紹到這了,更多相關(guān)react 國際化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于CSS實現(xiàn)MaterialUI按鈕點擊動畫并封裝成 React 組件

    基于CSS實現(xiàn)MaterialUI按鈕點擊動畫并封裝成 React 組件

    筆者先后開發(fā)過基于vue,react,angular等框架的項目,碧如vue生態(tài)的elementUI, ant-design-vue, iView等成熟的UI框架, react生態(tài)的ant-design, materialUI等,這些第三方UI框架極大的降低了我們開發(fā)一個項目的成本和復雜度,使開發(fā)者更專注于實現(xiàn)業(yè)務邏輯和服務化
    2021-11-11
  • react 父組件與子組件之間的值傳遞的方法

    react 父組件與子組件之間的值傳遞的方法

    本篇文章主要介紹了react 父組件與子組件之間的值傳遞的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • React?Hydrate原理源碼解析

    React?Hydrate原理源碼解析

    這篇文章主要為大家介紹了React?Hydrate原理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 如何使用Redux Toolkit簡化Redux

    如何使用Redux Toolkit簡化Redux

    redux-toolkit是目前redux官方推薦的編寫redux邏輯的方法,針對redux的創(chuàng)建store繁瑣、樣板代碼太多、依賴外部庫等問題進行了優(yōu)化,官方總結(jié)了四個特點是簡易的/有想法的/強勁的/高效的,總結(jié)來看,就是更加的方便簡單了
    2022-12-12
  • React Hooks核心原理深入分析講解

    React Hooks核心原理深入分析講解

    這篇文章主要介紹了react hooks實現(xiàn)原理,文中給大家介紹了useState dispatch 函數(shù)如何與其使用的 Function Component 進行綁定,節(jié)后實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • react-native滑動吸頂效果的實現(xiàn)過程

    react-native滑動吸頂效果的實現(xiàn)過程

    這篇文章主要給大家介紹了關(guān)于react-native滑動吸頂效果的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用react-native具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • React?Native?加載H5頁面的實現(xiàn)方法

    React?Native?加載H5頁面的實現(xiàn)方法

    這篇文章主要介紹了React?Native?加載H5頁面的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • react navigation中點擊底部tab怎么傳遞參數(shù)

    react navigation中點擊底部tab怎么傳遞參數(shù)

    本文主要介紹了react navigation中點擊底部tab怎么傳遞參數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • react高階組件經(jīng)典應用之權(quán)限控制詳解

    react高階組件經(jīng)典應用之權(quán)限控制詳解

    在React中,高階組件是重用組件邏輯的一項高級技術(shù)。下面這篇文章主要給大家介紹了關(guān)于react高階組件經(jīng)典應用之權(quán)限控制的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • 適用于React?Native?旋轉(zhuǎn)木馬應用程序介紹

    適用于React?Native?旋轉(zhuǎn)木馬應用程序介紹

    這篇文章主要介紹了適用于React?Native?旋轉(zhuǎn)木馬應用程序介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10

最新評論

钟山县| 沐川县| 商洛市| 来安县| 浦东新区| 江源县| 贵州省| 饶河县| 上林县| 扎赉特旗| 汝城县| 扶沟县| 红安县| 雷波县| 化隆| 巴林左旗| 临江市| 葫芦岛市| 土默特左旗| 林甸县| 齐齐哈尔市| 龙陵县| 清河县| 屏山县| 凤阳县| 抚宁县| 利川市| 巨野县| 瓦房店市| 大田县| 鄂尔多斯市| 汉中市| 宣汉县| 冀州市| 奉节县| 前郭尔| 孝感市| 安丘市| 尖扎县| 鄂托克前旗| 乐东|