我有这个工作函数,有条件地setState
一个searchMode
属性,但是我必须摆脱嵌套的三元表达式,该怎么办?
updateSearchMode = () => {
this.setState(prevState => ({
searchMode:
prevState.contactsInfo.length === 0
? searchModes.noResultsPanel
: prevState.contactsInfo.length === 0 && prevState.searchString
? searchModes.advisoryPanels
: searchModes.resultsPanel,
}));
};
最佳答案
您可以用正则if
替换该三元表达式:
updateSearchMode = () => {
this.setState(prevState => {
if (!prevState.contactsInfo.length && prevState.searchString)
return ({searchMode: searchModes.advisoryPanels});
if (!prevState.contactsInfo.length)
return ({searchMode: searchModes.noResultsPanel});
return ({searchMode: searchModes.resultsPanel});
});
};
请注意,我稍微改变了顺序,因为第二种情况永远无法实现,因为第一种情况始终会首先验证。