Ich verwende eine Map-Funktion und habe getestet und bestätigt, dass innerhalb der Maps-Funktion das Klassenobjekt wie gewünscht referenziert wird.JSX bindet dies an eine Funktion innerhalb einer Map
Wenn ich versuche, dies erneut zu übergeben, indem ich es an eine jsx-Funktion binde, übergibt es dies nicht wie gewünscht.
Fehler: Uncaught Typeerror:. _this3.checkType (...) binden ist keine Funktion
// wrapped in a class
checkType(type, options, placeholder, name, handleUpdatedValue, defvalue, index) {
console.log(this);
switch(type) {
case 'select':
return <select onChange={handleUpdatedValue.bind(this)} >{options.map((option, i) => <option value={option} key={i}>{option}</option>)}</select>
break;
case 'text':
return <input onChange={handleUpdatedValue.bind(this)} name={name} placeholder={placeholder} type="text" />
break;
case 'date':
return <input onChange={handleUpdatedValue.bind(this)} name={name} placeholder={placeholder} type="date" />
break;
default:
console.log('Error: Invalid Type');
}
return type === 'select' ? <select></select> : <input />
}
return(
<div className="formwrapper thinshadow">
<h3>{this.props.header}</h3>
{this.getFields().map((field, i) => {
<div key={i} className={field.classes}>
{this.checkType(field.type, field.options, field.placeholder, field.name, this.handleUpdatedValue.bind(this), field.defvalue, field.index).bind(this)}
// DOES NOT WORK^
<div className="minilabel"></div>
</div>
}, this)} // THIS WORKS
<button className="btn btn-primary"
onClick={() => this.props.onClick(values)} >
Save
</button>
</div>
);
Ich versuche, es aufzurufen, während dies beibehalten wird. Der Zweck der Funktion besteht darin, das richtige Feld zurückzugeben. Wenn ich die Bindung verwende, wird der Fehler entfernt, die Funktion wird jedoch nicht aufgerufen. Ich bin neu darin, bitte entschuldige mich, wenn ich deine Lösung nicht verstehe. Vergiss es, ich habe nur deinen Link gesehen, danke! – Sequential
@Sequential Sie können 'this.checkType (...)' einfach aufrufen. Ich werde eine Bearbeitung für weitere Details hinzufügen. –
Perfekt danke @Edmund Lee sehr geschätzt – Sequential