2017-10-07 25 views
0

私は共通のフォームを持っていますが、私はユーザーの入力を処理してデータを保存したいと思います。エンドポイントとユーザータイプが異なるため、別のクラスを使用して保存関数を渡す必要があります。 は、ここで私は私の保存機能があります。USERROLEと内部にパラメータを持つ関数を渡します

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); 

は、別のファイルから来たのとフォームでの提出とセーブ機能、フォームや火災を作成します。ここ

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> 
    ); 
    } 
} 

私は形成する機能を保存渡します。 datapropsパラメータをクリックして保存ファンクションを送信すると予想されます。しかし、関数スタイルの中に形成するために渡していない機能を、ログ保存するためによると、それはそれは前に解雇だと思われる、約束を渡します

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

は、どのように私はそれを提出するセーブ機能渡すことができるパラメータ

答えて

3

あなたはそうではありません関数を渡す。実際には、あなたはその関数の戻り値(約束している)をsubmit propに渡していることを意味する関数を呼び出しています。だから代わりに関数を渡してください。

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

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

に変更します
関連する問題