【发布时间】:2018-05-26 21:18:24
【问题描述】:
目前我有以下代码将 react-intl 暴露给非组件,但它会抛出一个错误,因为 intl as undefined。
我已经创建了一个单独的组件作为“CurrentLocale”并向它注入 intl。导出函数 t 将使用来自 CurrentLocale 上下文的 intl formatMessage。
import React from 'react';
import {injectIntl} from 'react-intl';
import PropTypes from 'prop-types';
import { flow } from 'lodash';
class CurrentLocale extends React.Component {
constructor(props,context){
super();
console.log(context,props);
console.log(this.formatMessage);
const { intl } = this.context.intl;//this.props;
this.formatMessage = intl.formatMessage;
}
render() {
return false;
}
}
CurrentLocale.contextTypes={
intl:PropTypes.object,
};
injectIntl(CurrentLocale);
function intl() {
return new CurrentLocale();
}
function formatMessage(...args) {
return intl().formatMessage(...args);
}
const t = opts => {
const id = opts.id;
const type = opts.type;
const values = opts.values;
let t;
switch (type){
case 'message':
default:
t = formatMessage(id, values);
}
return t;
}
export default t;
t 在另一个纯 javascript 文件中被称为,
import t from './locale/t';
t( { type: 'message', id:'button.Next'});
【问题讨论】:
标签: reactjs react-intl