2017-10-07 2 views
0

Ich habe eine gemeinsame Form mit Ich möchte mit Benutzereingaben umgehen und Daten speichern. Da aber Endpunkt und Benutzertyp unterschiedlich sind, sollte ich eine andere Klasse verwenden, um eine Speicherfunktion zu übergeben. hier habe ich meine speichern Funktion:übergeben Sie eine Funktion mit Parametern innerhalb

const save = async ({ data, props }) => { 
    const { match: { params: { userkey } } } = props; 
    const { name, selected } = data; 
    await rest.post(
    '/v1/distributor/role', 
    { key: name, permissions: selected }, 
    { 
     'x-distributor-key': userkey, 
    }, 
); 
}; 

export default compose(withProps({ save, getPermissions }))(NewRoles); 

mit Userrole aus einer anderen Datei kam und eine Form und Feuersparfunktion erstellen im Formular mit der Einreichung:

render() { 
    const { save } = this.props; 
    const { permissions } = this.state; 
    console.log(this.props); 
    return (
     <div className="col-md-4"> 
     <Form 
      submit={save({ data: this.state, props: this.props })} 
      change={this.change} 
      nameChange={this.nameChange} 
      permissions={permissions} 
     /> 
     </div> 
    ); 
    } 
} 

hier passiere ich Funktion speichern zu bilden. und erwarten, wenn submit geklickt Speichern Funktion Feuer mit data und props Parameter. aber nach einzuloggen, speichern Funktion nicht vorbei Funktion Stil zu bilden, in, es geht ein Versprechen, so scheint es gefeuert vor:

submit={save({ data: this.state, props: this.props })} 

wie kann ich speichern Funktion übergeben mit, dass einreichen Parameter

Antwort

3

Sie sind nicht Passierfunktion. Tatsächlich rufen Sie die Funktion auf, was bedeutet, dass Sie den zurückgegebenen Wert dieser Funktion (was ein Versprechen ist) an submit prop weitergeben. Übergeben Sie stattdessen eine Funktion. Ändern

submit={save({ data: this.state, props: this.props })}

zu

submit={() => save({ data: this.state, props: this.props })}

Verwandte Themen