【发布时间】:2019-03-22 08:16:19
【问题描述】:
我在顶部有多个复选框和一个删除按钮。做出选择后,我应该删除选中的复选框。我怎样才能在 React Js 中做到这一点。
【问题讨论】:
-
你能发布一些示例代码吗?
-
我现在没有我的代码。我刚刚导入了带有一些用户数据的 JSON 文件。 UI 显示带有用户名的复选框和顶部的删除按钮。我需要删除单击删除按钮时选中的复选框。
我在顶部有多个复选框和一个删除按钮。做出选择后,我应该删除选中的复选框。我怎样才能在 React Js 中做到这一点。
【问题讨论】:
试试这个:
class App extends React.Component {
state = {
list: [
{ id: 1, label: 'Reading', value: false },
{ id: 2, label: 'Playing game', value: false },
{ id: 3, label: 'Listening to music', value: false },
{ id: 4, label: 'Watching TV', value: true }
]
};
handleChange = e => {
const id = e.target.id;
this.setState(prevState => {
return {
list: prevState.list.map(
li => (li.id === +id ? { ...li,
value: !li.value
} : li)
)
};
});
};
handleClick = () => {
this.setState(prevState => {
return {
list: prevState.list.filter(li => !li.value)
};
});
};
render() {
return (
<div className="App">
{this.state.list.map(e => (
<div key={e.id}>
<input
type="checkbox"
id={e.id}
checked={e.value}
onChange={this.handleChange}
/>
<label htmlFor={e.id}>{e.label}</label>
</div>
))}
<button onClick={this.handleClick}>Delete</button>
</div>
);
}
}
ReactDOM.render( < App / > , document.getElementById('root'))
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="root"><div>
【讨论】:
filter() 方法来“删除”选中的项目。