【发布时间】:2021-12-04 03:20:40
【问题描述】:
寻找有关如何使用一个按钮的建议,当单击该按钮时,该按钮会将项目列表切换为按字母顺序排列的项目列表,并在再次单击时返回等等。截至目前,当我单击按钮时,它将显示按字母顺序排列的列表,但它只是呈现在已显示的原始列表之上。不太确定从这里去哪里
class MenuItems extends Component {
state = {
sortedItems: []
}
handleclick = (item) => {
this.props.deleteMenuItem(item.id);
}
menuSort = () => {
const ogList = [...this.props.menuItems]
let sortedList = ogList.sort((a, b) => a.name.localeCompare(b.name));
this.setState({sortedItems: sortedList})
};
render(){
return (
<div>
<button onClick={this.menuSort}>filter a to z</button>
{this.state.sortedItems.map((item) =>(
<li class="list" key={item.id}>
{item.name}
<br></br>
{item.body}
<br></br>
<img src={item.image}></img>
<br></br>
<button id={item.id} onClick={() => this.handleclick(item)}>delete </button>
</li>
))}
{this.props.menuItems.map((item) =>(
<li class="list" key={item.id}>
{item.name}
<br></br>
{item.body}
<br></br>
<img src={item.image}></img>
<br></br>
<button id={item.id} onClick={() => this.handleclick(item)}>delete </button>
</li>
))}
</div>
)
}
}
export default connect(null, {deleteMenuItem})(MenuItems)```
【问题讨论】:
-
你是什么意思“再次回来”?项目最初是如何排序的?
-
我希望按钮在单击时一次只显示一个列表,因此页面首先呈现 props.menuItems 地图,但是当我单击按钮时,我希望它按字母顺序组织列表按名称
-
是的,但是当再次单击按钮时,您希望它返回到最初的未排序/排序顺序。您不应该在某处保存初始数据吗?
-
初始数据来自我认为的 props.menuItems
-
好的。但是除非父级传入新数据或者您使用更改的数据更新组件的状态,否则不会重新渲染组件。在某些时候,该组件必须对数据的变化负责,无论是管理该状态,还是调用父级中的函数为其提供更新的数据。
标签: javascript reactjs