javascript - switch case JS的相同属性
问题描述
我正在使用 React,我不想回复 <ListItem ...> 代码的次数与实际情况一样多。有没有一种方法可以简化和减少这段代码?
displayToDoList = () => {
switch (this.state.sorted) {
case 0:
return (this.state.todosById.map(todo =>
<ListItem
key={todo.id}
plainText={todo.plainText}
name={todo.name}/>))
break;
case 1:
return (this.state.todosByName.map(todo =>
<ListItem
key={todo.id}
plainText={todo.plainText}
name={todo.name}/>))
break;
case 2:
return (this.state.todosByCreatedAt.map(todo =>
<ListItem
key={todo.id}
plainText={todo.plainText}
name={todo.name}/>))
break;
case 3:
return (this.state.todosByCharcacters.map(todo =>
<ListItem
key={todo.id}
plainText={todo.plainText}
name={todo.name}/>))
break;
}
}
我认为会有比我更好的方法。
解决方案
而不是case
0, 1, 2.. make this.state.sorted
= 'todosById','todosByName',..
然后返回
displayToDoList = () => {
return (this.state[this.state.sorted].map(todo =>
<ListItem
key={todo.id}
plainText={todo.plainText}
name={todo.name}/>))
}
推荐阅读
- python - 如何使用 fsolve 获得每次迭代的错误来确定多项式的根?
- docker - docker 检查结果为错误:即使图像存在也没有这样的对象
- css - 在 Wordpress 中为移动设备更改一个特定页面的 css
- javascript - 如何使用猫鼬从字符串数组中的对象数组返回字段
- html - 不能并排放置 div
- python - 有没有更快的方法来查找数据框中的常量值范围?
- javascript - 防止javascript mediarecorder在同时缓冲播放期间波动音量
- angular - Angular FormAray 组件
- angular - 如何在 Angular 10 中使用带有切换选项的侧面导航
- python-3.x - CNN:图像过滤步幅