reactjs - 在 react todo 应用中添加编辑 todo 功能并正确更新状态
问题描述
我有以下组件,它将一个待办事项添加到我的待办事项列表中。待办事项未显示在输入字段中,但我想如果单击按钮,我可以运行 onclick 功能,然后我可以编辑现有的待办事项。
这是我开始的,我只需要一些指导从这里去哪里。当我单击编辑待办事项按钮时,它会添加另一个项目,但不会编辑现有项目。我怀疑我没有按照我应该的那样编辑状态。
我的编辑待办事项功能:
editTodo = (title) => {
console.log("Edit todo:" + title)
const editTodo = {
title:title,
edited: false
}
this.setState({ todos: [
...this.state.todos, editTodo
]
});
}
我的待办事项旁边的编辑按钮:
<button className="edit-btn" onClick={this.props.editTodo.bind(this, id)}>EDIT</button>
我的编辑待办事项组件
class EditTodo extends Component {
state = {
edited: false
}
onSubmit = (e) => {
e.preventDefault();
this.props.editTodo(this.state.title);
this.setState({ title: ''});
}
onChange = (e) =>
this.setState({
[e.target.name]: e.target.value
}
);
render() {
return (
<form onSubmit={this.onSubmit}>
<input
type="text"
name="title"
placeholder="Edit Your Todo"
value={this.state.title}
onChange={this.onChange}
/>
<button
type="submit">
Edit
</button>
</form>
)
}
}
更新:
我做了一些更改,实现了一个假后端并再次查看了它,使用与删除功能相同的逻辑是有意义的,我如何更改以下内容来编辑我当前的待办事项:
这是我的删除待办事项功能
deleteTodo = (id) => {
axios.delete(`http://localhost:3004/todos/${id}`)
.then(res => this.setState({
todos: [
...this.state.todos.filter(todo =>
todo.id !== id
)]
}));
}
``
解决方案
我最初遵循的方法不起作用。Ref 解决了我的问题,最终解决方案发布在这里:edit todo list state not pass correct in react with axios
推荐阅读
- python - Python - 对象不可序列化
- javascript - 如何提取 JSON 解析对象的 Key 或第一个值
- ngrok - ngrok:tcp 转发到 25565(我的世界服务器)
- ssas - 如何查看有多少人在访问 ssas 多维数据集?
- powerbi - 在 Power BI 中解决 DirectQuery 的方法
- python - 使用带有正则表达式的 Pandas.Series.Apply 函数时出现问题
- javascript - 如何根据最新日期过滤/减少数据
- docker - 如何使用多个并发作业处理 Docker 登录到 Gitlab 容器注册表?
- c# - C# 反序列化 JSON Schema.org 来自网络的食谱
- java - 如何让我的循环在 java GUI 中只打印一个值?