一种缩短此代码的方法

问题描述 投票:0回答:3

有什么方法可以缩短这段代码吗?唯一的区别是我希望在索引0处显示“全部”而不是数组值。

或者可能是多重条件?比如在index = 0,这样做,索引是%2,这样做,最后一个索引,这样做吗?

我也找到了相同的解决方案。我现在又遇到了一个问题,

我想在onClick中选择两个函数。

<a onClick={()=>{AddNewBookmark(userId, newsId); this.changeBookmarkState(isBookmarked, bookmarkIndex);}}>

我想索引== 0使用AddNewBookmark(userId,newsId)或索引== 1然后使用RemoveBookmark(userId,newsId)。

<a onClick={()=>{ index == 0 ? AddNewBookmark(userId, newsId) : 
 RemoveBookmark(userId, newsId); this.changeBookmarkState(isBookmarked, 
 bookmarkIndex);}}>

我希望无论索引值是什么,都要包含changebookmarkstate。

我的尝试不知何故。有什么建议吗?

reactjs typescript
3个回答
2
投票

由于您所做的只是更改在span中呈现的内容,因此您可以在跨越的JSX中执行逻辑

这应该工作:

isFiltered[index] && (
   <div key={index}>
     <span>{index == 0 ? "All" : category['Name']}</span>              
   </div>        
);

您还可以将此逻辑提取到函数中,然后在span中调用该函数。如果您想要在该范围内显示一堆不同的结果,这将更清洁。像这样的东西:

helperFucntion(index: number) => (
   index == 0 ? "All" : category['Name']
)

isFiltered[index] && (
   <div key={index}>
     <span>{helperFunction(index)}</span>              
   </div>        
);

1
投票

代码的最短形式可能是这样的:

isFiltered[index] && return (
          <div key={index}>
              <span">{ index ? "ALL" : category['Name'] }</span>              
         </div>        
);

0
投票

您的代码似乎不完整,所以我无法确定,但您可以根据需要使用以下内容。

您可以在数组的开头插入新索引。

isFiltered.unshift['All'];

if (isFiltered[index]){
    return (
        <div key={index}>
            <span>{ category['Name']}</span>              
        </div>        
    );                   
}
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.