Reactjs 使用react js删除列表中的特定项
因此,我试图从当前数组中删除todo项,但该项不起作用。当服务器启动时,我尝试了console.log,但没有传递任何参数 Todos返回一个数组[] 这是我的密码:Reactjs 使用react js删除列表中的特定项,reactjs,Reactjs,因此,我试图从当前数组中删除todo项,但该项不起作用。当服务器启动时,我尝试了console.log,但没有传递任何参数 Todos返回一个数组[] 这是我的密码: handleTodoDelete = (deleteTodo) => { const remainingItems = this.state.todo.filter (todo => { return todo !== deleteTodo; }); this.setState
handleTodoDelete = (deleteTodo) => {
const remainingItems = this.state.todo.filter (todo => {
return todo !== deleteTodo;
});
this.setState({
todos: remainingItems
});
}
我的返回码有以下内容:
return (
<li
className={completeClass}
onClick={() => this.handleTodoClick(todo)}>
{todo.description}
<button onClick=
{(todo)=>this.handleTodoDelete(todo)}>delete</button>
</li>
返回(
this.handleTodoClick(todo)}>
{todo.description}
this.handleTodoDelete(todo)}>delete
尝试执行以下操作:
const remainingItems = this.state.todos.filter (todo => {
return todo !== deleteTodo;
});
this.setState({
todos: remainingItems
});
或者尝试做:
const remainingItems = this.state.todo.filter (todo => {
return todo !== deleteTodo;
});
this.setState({
todo: remainingItems
});
似乎您希望在状态中使用todo
或todo
,而不是两者都使用
下面是一些带有过滤器的工作代码,可能会帮助您比较参考:
const-app=document.querySelector(“#app”);
const todoOne={id:1,description:“给这个编码。”};
const-todoTwo={id:2,description:“制造它。”};
常数todos=[
今天,
托多沃,
];
const todoToRemove=todoOne;
const removedTodos=todos.filter(
(todo)=>todo.id!=todoToRemove.id
)
app.innerHTML=`
待办事项(原件):
${JSON.stringify(待办事项)}
待办事项(已删除):
${JSON.stringify(removedTodos)}
`;
一小条
在react redux应用程序中更改列表或对象时,应始终创建另一个列表或对象
最好的方法是通过spread操作符
handleTodoDelete = (deleteTodo) => {
let state = this.state;
let newTodo = [...state.todo.filter(todo => todo.id !== deleteTodo.id)];
state.todo = newTodo;
this.setState({ state });
}
似乎您正在将过滤设置为
todo
数组的状态,但您正在设置todos
。您是否应该只是在处理todo
或todos
?当im通过…(完成!=isdone-{this.state.todos.map(todo=>{let completeClass=“”;if(todo.isdone)时,它会起作用{completeClass=“complete”}返回(this.state.todos.map
正在工作,可以尝试this.state.todos.filter
。您有this.state.todo.filter
它是单数而不是复数。这有意义吗?当我将其更改为“this.state.todos.filter”时,它仍然不会删除您可能希望您的状态匹配,但这可能是另一个问题。todo!==deleteTodo
正在比较对象而不是值。您可以改为比较和id吗?todo.id!==deleteTodo.id
谢谢您的回答。您介意在代码中添加一些澄清或解释性文本吗?