【发布时间】:2019-07-21 08:33:13
【问题描述】:
我是 React 新手,我想使用 react-input-mask 和 antd 输入字段。如果我使用getFieldDecorator 和Form.create,一切正常。
在 inputmask.js 中:
const CustomInput = forwardRef((props, ref) => {
return (
<ReactInputMask {...props}>
{inputProps => (
<Input
{...inputProps}
ref={ref}
disabled={props.disabled ? props.disabled : null}
/>
)}
</ReactInputMask>
);
});
CustomInput.propTypes = {
mask: PropTypes.string,
maskChar: PropTypes.string,
formatChars: PropTypes.object,
alwaysShowMask: PropTypes.bool,
inputRef: PropTypes.func
};
export default CustomInput;
在 index.js 中:
function FormBuilder(props) {
const { getFieldDecorator } = props.form;
return (
<Form>
<Form.Item label="Phone">
{getFieldDecorator("phone", {
rules: [{ required: true, message: "Phone is required." }]
})(
<CustomInput
mask="+7 (999) 999-99-99"
placeholder="+7 (___) ___-__-__"
/>
)}
</Form.Item>
<Button htmlType="submit" type="primary">
Send
</Button>
</Form>
);
}
const App = Form.create({ name: "form" })(FormBuilder);
这里是demo。
但如果我删除 getFieldDecorator 和 Form.create(因为我将使用 react-final-form 并且我不需要它们),则掩码不起作用。
这是我的新 index.js 和 demo。
function App(props) {
return (
<Form>
<Form.Item label="Phone">
<CustomInput
mask="+7 (999) 999-99-99"
placeholder="+7 (___) ___-__-__"
/>
</Form.Item>
<Button htmlType="submit" type="primary">
Send
</Button>
</Form>
);
}
代码基本相同,但在第二个示例中,掩码不起作用。你能告诉我,我的错误在哪里吗?
【问题讨论】:
标签: javascript reactjs antd