作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不确定如何从中获取值
<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/
我是一名优秀的程序员,十分优秀!