私はFormControl
からreact-bootstrap
を使用してテンプレートのTextAreaFieldを得て、素敵なブートストラップのルックアンドフィールを提供しています。react-intlを反応ブートストラップと併用する
react-intl
で国際化されたメッセージを使用したいと考えています。 FormControl
の外のすべてのコンポーネントで動作しますが、小道具では動作しません。私が試してみてFormattedMessage
をplaceholder
に渡すと、それはただ表示されます[object Object]
アイデア?
TextAreaField.js
import React, {PropTypes} from 'react';
import Help from './Help';
import {FormGroup, ControlLabel, FormControl } from 'react-bootstrap';
const TextAreaField = ({ input, label, tooltip, rows, meta }) => {
const { touched, warning, error} = meta;
let currentState = null;
if (touched) currentState = (error ? "error" : warning ? "warning" : null);
return (
<FormGroup controlId={input.name} validationState={currentState}>
{tooltip && <Help input={input.name} text={tooltip}/>}
<FormControl
componentClass="textarea"
style={{height: rows * 2 + "em"}}
placeholder={label}
{...input}
/>
{currentState && <ControlLabel className={currentState}>{error || warning}</ControlLabel>}
</FormGroup>
);
};
TextAreaField.propTypes = {
input: PropTypes.object.isRequired,
label: PropTypes.object.isRequired,
tooltip: PropTypes.object,
meta: PropTypes.object,
rows: PropTypes.number,
};
TextAreaField.defaultProps = {
rows: 3
};
export default TextAreaField;
プレースホルダは文字列ではなく、オブジェクトを期待TextAreaField
<Field name="text" label={<FormattedMessage id="Order.Text" />} validate={required}
warn={bigJob} component={TextAreaField} rows={5}/>
ありがとう、私は実際にそれを遭遇し、同じことを実装しました - ただ自分の質問に答えるのを忘れました:) – alt