У меня есть несколько идентичных форм с функцией проверки. Я хочу создать другую форму с таким же поведением, кроме функции проверки.реакция js компонентный полиморфизм
Я пытаюсь использовать mixins для этого, но mixins не поддерживает переопределение метода.
Какой подход подходит для решения этой проблемы?
Это пример задачи: https://jsfiddle.net/69z2wepo/9150/
var FormMixin = {
validate: function() {
if (this.state.message !== '') {
this.setState({status: 'ok'});
} else {
this.setState({status: 'error'});
}
},
getInitialState: function() {
return {
message: 'Hello123!',
status: ''
};
},
handleChange: function (newValue) {
this.setState({
message: newValue
});
},
valueLink: function() {
return {
value: this.state.message,
requestChange: this.handleChange
}
},
render: function() {
return (
<div>
<input type = "text" valueLink = {this.valueLink()} />
<button onClick={this.validate} >Validate</button>
<div>{this.state.status}</div>
</div>
);
}
}
var Form = React.createClass({
mixins: [FormMixin]
});
var FormEmpty = React.createClass({
/*validate: function() { // How to override validation
this.setState({status: 'ok'});
},*/
mixins: [FormMixin]
});
var Hello = React.createClass({
render: function() {
return (<div>
<Form />
<Form />
<Form />
<FormEmpty />
</div>);
}
});
React.render(<Hello />, document.getElementById('container'));