2017-10-07 181 views
0

我有一個通用的形式,我想處理用戶輸入和保存數據。但由於端點和用戶類型不同,我應該使用另一個類將保存功能傳遞給它。 這裏我有我保存功能:傳遞一個帶參數的函數

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

與UserRole的來自另一個文件,並創建一個表單和消防保存功能與表單提交:

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支持。所以,而是傳遞一個函數。更改

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

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

相關問題