Ada*_*sky 5 reactjs final-form
使用final-form,我有第三方输入组件.我为它写了一个适配器.它也有验证器,但meta.touched总是错误的.我已经尝试将onFocus事件传播到输入,但没有运气.我究竟做错了什么?
const requiredValidator = value => (value ? undefined : 'is required');
const FloatingLabelInputAdapter = ({ input, meta, ...rest }) => (
<FloatingLabelInput
{...rest}
onChange={(event) => input.onChange(event)}
onFocus={(event) => input.onFocus(event)}
errorText={meta.touched ? meta.error : ''}
/>
)
// used like this:
<Field
component={FloatingLabelInputAdapter}
label="Email"
name="email"
type="text"
validate={requiredValidator}
/>
// and here's the render() of the component
render() {
const { children, label } = this.props;
const { focussing, used } = this.state;
console.log('FloatingLabelInput.props', this.props);
return (
<Group {...this.props} >
<TextInput
focussing={focussing}
innerRef={(comp) => { this.input = comp }}
onFocus={this.onFocusHandle}
onBlur={this.onBlurHandle}
onChange={this.onChange}
type={this.props.type} />
<Label
focussing={focussing}
used={used}>
{label}
</Label>
<Bar focussing={focussing} />
</Group>
);
}
}
Run Code Online (Sandbox Code Playgroud)
像往常一样,我回答我自己的问题.
我也必须传播这个onBlur()事件,这是有道理的,因为touched文档只有在用户输入并关注输入后才会说它是真的.
<FloatingLabelInput
...
onBlur={(event) => input.onBlur(event)}
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1095 次 |
| 最近记录: |