【发布时间】:2020-07-21 16:22:37
【问题描述】:
所有代码如下:
import React, { Component } from "react";
import "./App.css";
import Slider from "@material-ui/core/Slider";
import Typography from "@material-ui/core/Typography";
class App extends Component {
state = {
users: [],
};
componentDidMount() {
fetch("/users").then((response) =>
response.json().then((data) => {
this.setState({ users: data.users });
})
);
}
removeSlider(user) {
const users = [...this.state.users];
users.splice(users.indexOf(user), 1);
this.setState({ users: users });
}
render() {
return (
<div className="App">
{this.state.users.map((user) => (
<div className="slider" id="di">
<Typography id="range-slider" gutterBottom>
<button className="btn" onClick={() => this.removeSlider(user)}>
{user.first_name[0].toUpperCase() + user.first_name.slice(1)}
</button>
</Typography>
<Slider
orientation="vertical"
defaultValue={[0, 50]}
aria-labelledby="vertical-slider"
/>
</div>
))}
</div>
);
}
}
export default App;
用户来自另一台服务器。在排版中,每个用户都有一个按钮,该按钮基本上将他们从用户列表中删除(由 removeSlider 处理程序处理)。 这里的问题是,当我这样做时,与列表末尾对应的滑块会被删除,而不是我要删除的那个。
所以在图片中我删除了 Jordan,但 Imagine 的滑块被删除了。不过,Jordan 实际上已从用户数组中删除。
任何帮助将不胜感激。
【问题讨论】:
-
控制台中的警告应该告诉您问题所在。您需要在
<div className="slider" id="di">中指定一个有意义的键(例如<div className="slider" id="di" key={user.id}>)。
标签: javascript reactjs slider material-ui