首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与mobx反应形式有关的问题

与mobx反应形式有关的问题
EN

Stack Overflow用户
提问于 2018-03-21 18:31:39
回答 2查看 1K关注 0票数 0

我试图开始使用mobx-react表单,但是遇到了一个错误:

代码语言:javascript
复制
Unhandled Rejection (Error): Validation Error: Invalid Field Instance    
-> const form = new Form();

这是我的代码:

代码语言:javascript
复制
import React, { Component } from 'react';
import { inject, observer } from 'mobx-react';
import { Form as BaseForm } from 'mobx-react-form';
import validatorjs from 'validatorjs';

class Form extends BaseForm{
    plugins() {
        return { dvr: validatorjs };
    }

    setup(){
        return {
            fields: [{
                name: 'amount',
                label: 'Amount',
            }]
        }
    }

    hooks(){
        return {
            onSuccess(form) {
                alert('Form is valid! Send the request here.');
                // get field values
                console.log('Form Values!', form.values());
            },
            onError(form) {
                alert('Form has errors!');
                // get all form errors
                console.log('All form errors', form.errors());
            }
        };
    }
}

@observer
class PaymentForm extends Component {
    render() {    
        const form = new Form();

        return (
            <div>
                <h2>Payment Form</h2>

                <form onSubmit={form.onSubmit}>
                    <label>
                        {form.$('amount').label}
                        <input {...form.$('amount').bind()} />
                        <p>{form.$('amount').error}</p>
                    </label>
                </form>
            </div>
        )
    }
}

export default PaymentForm;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-22 17:17:08

这原来是我运行的版本控制错误:

代码语言:javascript
复制
"dependencies": {
  "axios": "^0.18.0",
  "custom-react-scripts": "^0.2.2",
  "expect": "^23.0.0-alpha.0",
  "mobx": "^4.1.0",
  "mobx-react": "^5.0.0",
  "mobx-react-form": "^1.32.3",
  "react": "^16.2.0",
  "react-dom": "^16.2.0",
  "react-redux": "^5.0.7",
  "react-router-dom": "^4.2.2",
  "validatorjs": "^3.14.2"
},

我降级为:

代码语言:javascript
复制
"dependencies": {
  "axios": "^0.18.0",
  "custom-react-scripts": "^0.2.2",
  "expect": "^23.0.0-alpha.0",
  "mobx": "^3.3.1",
  "mobx-react": "^4.3.3",
  "mobx-react-form": "^1.32.3",
  "react": "^16.2.0",
  "react-dom": "^16.2.0",
  "react-redux": "^5.0.7",
  "react-router-dom": "^4.2.2",
  "validatorjs": "^3.13.5"
}

现在一切都在起作用。

票数 0
EN

Stack Overflow用户

发布于 2018-03-22 10:08:52

您的标签定义错误,正确的设置应该如下所示:

代码语言:javascript
复制
setup() {
  return {
    fields: {
      <fieldName>: { <properties> },
    }
  }
}

例如,这些属性可以是value

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49414100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档