NewOldMax / react-form-validator-core

Core validator component for react forms
MIT License
94 stars 44 forks source link

[Reactjs] addValidationRule log err message in console #58

Closed lac-leadplus closed 4 years ago

lac-leadplus commented 5 years ago

Hi, Thanks for your great lib, I have an issue when use your add custom rule.

  1. I add new Rule for my checkbox ValidatorForm.addValidationRule('isChecked', (value) => { return value; });

  2. Then, I use this rule in my component

    <GMForm onSubmit={this.handleSubmit}>
            <GMInput
              onChange={this.handleChange}
              name="email"
              value={this.state.email}
              className="form-control"
              validators={["required"]}
              errorMessages={["This field is required"]}
            />
    
            <GMCheckbox
              onChange={(e) => {
                this.handleChange({
                  target: {
                    name: e.target.name,
                    value: !this.state.is_valid
                  }
                });
              }}
              checked={this.state.is_valid}
              name="is_valid"
              label="How to Valid"
              value={this.state.is_valid}
              validators={["isChecked"]}
              errorMessages={["You Must Checked"]}
            />
    
            <ButtonPrimary type="submit">Submit</ButtonPrimary>
     </GMForm>

    Input work perfect with rule required

  3. My console show this error unknown errorMessages type ["You Must Checked"]

I check your lib, and see

_this.getErrorMessage = function () {
            var errorMessages = _this.state.errorMessages;

            var type = typeof errorMessages === 'undefined' ? 'undefined' : _typeof(errorMessages);

            if (type === 'string') {
                return errorMessages;
            } else if (type === 'object') {
                if (_this.invalid.length > 0) {
                    return errorMessages[_this.invalid[0]];
                }
            }

            // eslint-disable-next-line
            console.log('unknown errorMessages type', errorMessages);
            return true;

Error come from _this.invalid is a empty array.

So, What wrong in my setting new rule, can you reply me an example. Thanks for your reading.

NewOldMax commented 5 years ago

Please reproduce your issue on https://codesandbox.io/s/new

NewOldMax commented 4 years ago

closed due no activity