javascript - 从格式化消息中提取字符串
问题描述
我正在尝试从中提取字符串部分,FormattedMessage
以便可以访问它并使用 CSV 导出它。
这是我的FormattedMessage
代码(IntlMessages.js
):
import React from 'react';
import {FormattedMessage, injectIntl} from 'react-intl';
const InjectMassage = props => <FormattedMessage {...props} />;
export default injectIntl(InjectMassage, {
withRef: false
});
为了显示数据,我使用
<IntlMessage id="" />
来自哪里IntlMessage
的代码的导入语句FormattedMessage
。
import IntlMessage from ./"IntlMessages.js";
我根据存储在 json 文件中的 id 获取字符串。
我只想从中提取字符串,IntlMessage
以便我可以操作并导出为 CSV,因为它现在以[object Object]
. 我正在使用材料表来显示数据,它就像:
title: <IntlMessage id="" />
我是这个 react-intl 的新手,并且无法取得进展,所以如果有人可以指导我,这将对我有所帮助。
编辑:
我正在使用材料表,我想下载 csv,但现在我得到[object Object]
的只是标题IntlMessages
。我想将一个字符串返回到标题,以便在下载时出现该字符串而不是[object Object]
.
我也尝试过<IntlProvider textComponent={React.Fragment}>
,但这也行不通。
解决方案
如果您使用的是类组件,则可以使用injectIntl
HOC 将intl
对象提供给道具,然后用于intl.formatMessage({...})
获取字符串中的标题。您问题中的代码不起作用,因为它使用FormattedMessage
的是一个反应组件(对象):
const Content = injectIntl(MaterialTableContainer);
在返回的组件内部MaterialTable
:
<MaterialTable
columns={[
{
title: this.props.intl.formatMessage({
id: "titleId",
defaultMessage: "Title"
}),
field: "name"
},
现场演示(源代码)
推荐阅读
- node.js - 无法在 Express App 中获取客户 IP 地址
- html - 如何让我的图像在 CSS 中通过?
- php - 如何为某个字段具有某个值的所有产品提取 xml 数据?
- admob - 可以使用实时 Admob 代码在测试设备上运行 Admob 广告吗?
- unity3d - 当我打开口型同步选项卡时,Unity 检查器 GUI 坏了
- c++ - 如何使用 Boost MSM 检索包含状态机
- javascript - 编译失败:找不到模块
- logging - Athena 经典负载均衡器日志
- sql - Oracle - to_date() 解析为 00:00:00
- php - response()->json 无法在 Laravel 中解码