【问题标题】:TypeError: Cannot read property 'languages' of undefined in react-localize-reduxTypeError:无法读取 react-localize-redux 中未定义的属性“语言”
【发布时间】:2019-02-22 04:39:25
【问题描述】:

我试图在我的应用程序中实现 react-localize-redux。但我得到以下错误

TypeError: 无法读取未定义的属性“语言”

这来自 node_modules/react-localize-redux/es/localize.js:249

我的代码实现如下。

let store = createStore(combineReducers({icm: icmReducer, locale: locale}));

ReactDOM.render(
<Provider store={store}>
    <LocalizeProvider store={store}>
        <App/>
    </LocalizeProvider>
</Provider>,
document.getElementById('root'));

App.js

class App extends React.Component {

constructor(props) {
    super(props);
    this.props.initialize({
        languages: [
            {name: "English", code: "en"},
            {name: "French", code: "fr"}
        ],
        translation: globalTranslations,
        options: {renderToStaticMarkup}
    });
}

render() {
    return (
        <div className="App container">
            <Header/>
            <InvoiceAudit/>
        </div>
    );
  }
}

export default withLocalize(App);

global.json

{
 "welcome": {
"greeting": [
  "Hello",
  "Bonjour",
  "Hola"
],
"farewell": [
  "Goodbye",
  "Au revoir",
  "Adiós"
  ]
 }
}

错误

【问题讨论】:

    标签: reactjs redux


    【解决方案1】:

    我找到了解决方案。当我们使用结合减速器和 localizeReducer 时,我们需要提供名称为 localize。这是必须的,否则它将无法正常工作。

    import {LocalizeProvider, localizeReducer} from 'react-localize-redux';
    

    let store = createStore(combineReducers({icm: IcmWebReducer, localize: localizeReducer}));

    这里提到了这个:https://ryandrewjohnson.github.io/react-localize-redux-docs/#what-if-i-want-to-use-redux

    【讨论】:

      【解决方案2】:

      看起来您初始化了 2 种语言,但有 3 种翻译。您应该在初始化程序中添加西班牙语:

      languages: [
        {name: "English", code: "en"},
        {name: "French", code: "fr"},
        {name: "Spanish", code: "es"}
      ],
      

      (只是猜测这是问题所在)

      【讨论】:

      • 这没有帮助。 react-localize-redux 可以在 react.js 应用中使用吗?
      【解决方案3】:

      如果您想在商店中使用不同名称或不同路径的 localize,只需使用 getState 属性即可。

      (打字稿)

      <LocalizeProvider
        store={store}
        getState={(state: AppState) => state.user.locale}
      >
      //...
      </LocalizeProvider>
      

      应用状态结果:state.png

      【讨论】:

        猜你喜欢
        • 2019-02-25
        • 1970-01-01
        • 2021-09-04
        • 2021-05-18
        • 2021-03-01
        • 2019-03-19
        • 2019-10-29
        • 1970-01-01
        • 2016-12-05
        相关资源
        最近更新 更多