2016-09-23 77 views
0

我可能會說這有點奇怪。讓我列出一些代碼來幫助解釋。我在寫一個簡單的反應組件。這個反應組件有一個我提交表單的表單。這是我到目前爲止:如何使用函數的返回值作爲另一個函數的返回值

onSubmit(event){ 
    event.preventDefault() 
    if (this.checkQuantity()){ 
    // this is what i want to be simpler, the return value i want is already in the checkQuantity function in the if condition 
    return true 
    } else { 
    let itemId = this.props.item.id 
    let quantity = this.state.quantity 
    this.props.onTransaction(itemId, quantity) 
    } 
} 
checkQuantity(){ 
    if (this.state.quantity > this.props.item.quantity){ 
    alert("Can't buy what's not there!") 
    return true 
    } else { 
    return false 
    } 
} 

像上面的評論狀態,我只是想停止執行表單提交。我想,我只是在尋找這種情況下的最佳做法。一個我想要抽象的功能,但在條件中使用該抽象功能的返回值作爲返回。

+2

在if分支中返回'true'並且在else分支中沒有任何東西似乎很奇怪,但除了你的代碼看起來好嗎? – Bergi

+0

哦,男人,我覺得愚蠢。是的,我不需要一個返回值來停止函數,因爲其餘的將不會被評估。嘆。如果你想,你可以把這個答案,我會檢查它 –

回答

3

我WR伊特

onSubmit(event) { 
    event.preventDefault() 
    if (!this.checkQuantity()) { 
    let itemId = this.props.item.id 
    let quantity = this.state.quantity 
    this.props.onTransaction(itemId, quantity) 
    } 
} 
checkQuantity() { 
    const isToomuch = this.state.quantity > this.props.item.quantity; 
    if (isToomuch) { 
    alert("Can't buy what's not there!") 
    } 
    return isToomuch 
} 

或者,也許你想放的alertonSubmit方法裏面,然後checkQuantity變得更簡單。您也可以將checkQuantity重命名爲更具描述性的內容,例如isInvalidQuantity

0
onSubmit(event){ 
    event.preventDefault() 
    return checkQuantity(); 
} 
checkQuantity(){ 
    if (this.state.quantity > this.props.item.quantity){ 

alert("Can't buy what's not there!") 
return true 

    } else { 

let itemId = this.props.item.id 
let quantity = this.state.quantity 
this.props.onTransaction(itemId, quantity) 

return false 

    } 
} 
0

這裏的問題是你不只是想返回checkQauntity()的值,你想作用於返回值,然後決定怎麼做。在這種情況下,您擁有的代碼與其執行任何操作一樣好。

但對於更一般的情況下(你不只是返回true或false,你可以不喜歡以下內容:

onSubmit(event){ 
event.preventDefault(); 
var check = checkQuantity(); 
if (check > 6){ 
    return check; 
} 
else { 
    //do something else.. 
} 
} 

checkQuantity(){ 
var someNumber = ...someNumber; 
return someNumber; 
} 
0

我覺得你是分裂的功能不必要豈不以下代碼就夠了嗎?

onSubmit(event){ 
    event.preventDefault() 
    if (this.state.quantity > this.props.item.quantity){ 
    alert("Can't buy what's not there!") 
    } else { 
    let itemId = this.props.item.id 
    let quantity = this.state.quantity 
    this.props.onTransaction(itemId, quantity) 
    } 
} 

此外,像其他人所說,則返回值沒有意義的例子,因爲你沒有檢查它。