New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FormItem doesn't detect control input inside #5540
Comments
It's difficult to solve this issue. Could you post your advice(how to implement) here if any? |
We solved this by calling the component as a function CustomForm.js // imports here
class CustomForm {
render() {
return (<Form>
<Form.Item>
{UsernameInput({ form: this.props.form })}
</Form.Item>
</Form>);
}
}
export default Form.create()(CustomForm); But if you're open to ideas, I think a possible solution would be to define a context in the FormItem.js class FormItem extends Component {
static childContextTypes = {
registerControl: PropTypes.func
};
getChildContext() {
return { registerControl: this.registerControl };
}
registerControl(control) {
this.controls.push(control);
}
} Input.js class Input extends Component {
static contextTypes = {
registerControl: PropTypes.func
};
componentDidMount() {
if (this.context.registerControl) {
this.registerControl(this);
}
}
} |
I will try to find a solution. |
@gaastonsr could u show your whole code about the UsernameInput with this workaround? |
@gaastonsr Your solution help me a lot! Is this is a still valid issue? The context suggestion sounds good to me. |
Just ran into this today on antd@3.9.3. Still an issue. @gaastonsr's function workaround is imo more elegant than requiring all form component's to check for context. |
Hello @gaastonsr. We totally like your proposal/feedback, welcome to send us Pull Request for it. Please send your Pull Request to proper branch (feature branch for new feature, master for bugfix and other changes), fill the [Pull Request Template] here, provide changelog/TypeScript/documentation/test cases if needed and make sure CI passed, we will review it soon. Appreciate it advance and we are looking forword to your contribution! 你好 @gaastonsr, 我们完全同意你的提议/反馈,欢迎直接在此仓库 创建一个 Pull Request 来解决这个问题。请将 Pull Request 发到正确的分支(新特性发到 feature 分支,其他发到 master 分支),务必填写 Pull Request 内的预设模板,提供改动所需相应的 changelog、TypeScript 定义、测试用例、文档等,并确保 CI 通过,我们会尽快进行 Review,提前感谢和期待您的贡献! |
Please check new form component in antd v4, v3 form will not be maintained in short time. |
Still have the same problem, any workaround for 4.3? |
Environment
What did you do? Please provide steps to re-produce your problem.
We wrap our form fields into their own component which contain their validation logic. Example
UsernameInput.js
And we want to use them in our forms like this
This doesn't work because FormItem.getControls doesn't detect the component as a control. Just sees the wrapper as UsernameInput.
What do you expected?
FormItem
to detectUsernameInput
and work as any input control. Show error messages, feedback, helps, etc.What happen?
FormItem
doesn't find the control inside.The text was updated successfully, but these errors were encountered: