reactjs - React-Intl 如何在输入占位符中使用 FormattedMessage

标签 reactjs react-intl react-starter-kit

我不确定如何从中获取值

<FormattedMessage {...messages.placeholderIntlText} />

转换成占位符格式,如输入:

<input placeholder={<FormattedMessage {...messages.placeholderIntlText} />} />

因为它将在实际占位符中返回 [Object object]。有没有办法获得实际的正确值?

最佳答案

<Formatted... />react-intl中 react 组件旨在用于渲染场景,而不是用于占位符、替代文本等。它们渲染 HTML,而不是纯文本,这在您的场景中没有用处。

相反,react-intl提供lower level API出于完全相同的原因。渲染组件本身在底层使用此 API 将值格式化为 HTML。您的场景可能需要您使用较低级别 formatMessage(...) API。

您应该注入(inject)intl使用 injectIntl 将对象添加到您的组件中HOC,然后通过 API 格式化消息。

示例:

import React from 'react';
import { injectIntl, intlShape } from 'react-intl';

const ChildComponent = ({ intl }) => {
  const placeholder = intl.formatMessage({id: 'messageId'});
  return(
     <input placeholder={placeholder} />
  );
}

ChildComponent.propTypes = {
  intl: intlShape.isRequired
}

export default injectIntl(ChildComponent);

请注意,我在这里使用了一些 ES6 功能,因此请根据您的设置进行调整。

关于reactjs - React-Intl 如何在输入占位符中使用 FormattedMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39630620/

相关文章:

reactjs - React native 框架,我的应用程序有问题,当我尝试执行 Npm start 时,请帮助我

javascript - React - 使用 wp_mail 发送电子邮件

reactjs - 在项目上运行formatjs提取时,未返回任何消息。有什么想法吗?

reactjs - 是否可以覆盖一个特定 intl.formatMessage 的区域设置?

CSS 模块的 CSS 特性

javascript - React 入门套件与 Next.js

javascript - REACT——在react中添加输入切换

javascript - OwnProps Match 和 Params 未定义 React-Router V3

css - Material-ui makeStyles 前后都有

javascript - webpack 将代码中的值替换为 json 文件中的值