validate = () => { const result = Joi.validate(this.state.data, this.scheema, { abortEarly: false }); if (!result.error) return null; const errors = {}; for (let item of result.error.details) { errors[item.path[0]] = item.message; } return errors; }; validateProperty = inputField => { const { name, value } = inputField; const obj = { [name]: value }; const scheema = { [name]: this.scheema[name] }; const result = Joi.validate(obj, scheema); return result.error ? result.error.details[0].message : null; }; handleChange = event => { const errors = { ...this.state.errors }; const errorMessage = this.validateProperty(event.currentTarget); if (errorMessage) errors[event.currentTarget.name] = errorMessage; else delete errors[event.currentTarget.name]; const data = { ...this.state.data }; data[event.currentTarget.name] = event.currentTarget.value; this.setState({ data: data, errors: errors }); };