reactjs - 反应输入状态不清楚如何清除输入状态
问题描述
如您所见,我正在使用react-redux
待办事项。我的应用程序运行良好,但问题是,当我单击添加按钮时,输入值没有被清除。我该如何解决这个问题?
import React, { useState } from "react";
import { AddTodo, DeleteTodo, RemoveTodo } from "./actions";
import { useDispatch } from "react-redux";
const Todo = () => {
const [inputData, setInputData] = useState();
const dispatch = useDispatch();
return (
<div className="container">
<div className="mt-3">
<div className="row">
<div className="col-5 col-md-8 col-sm-12 m-auto">
<div className="card shadow-lg">
<div className="card-header bg-warning">
<h2 className="text-center fw-bolder text-primary">
Todo List
</h2>
<div className="row my-2">
<div className="input-group">
<input
type="text"
className="form-control"
placeholder="You can add todo Here...."
onChange={(e) => setInputData(e.target.value)}
/>
<button
className="btn btn-success"
onClick={() => dispatch(AddTodo(inputData), setInputData(""))}
>
<i className="fa fa-plus"></i>
</button>
</div>
</div>
</div>
<div className="card-body">
<ul className="list-group text-center fw-bolder">
<li className="list-group-item">Girish</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
);
};
export default Todo;
我在应用程序中导入,应用程序是主要组件。我能做些什么来解决我的问题?
解决方案
发生这种情况是因为您使用的是setInputData("")
inside of dispatch
:
import React, { useState } from "react";
import { AddTodo, DeleteTodo, RemoveTodo } from "./actions";
import { useDispatch } from "react-redux";
const Todo = () => {
const [inputData, setInputData] = useState();
const dispatch = useDispatch();
return (
<div className="container">
<div className="mt-3">
<div className="row">
<div className="col-5 col-md-8 col-sm-12 m-auto">
<div className="card shadow-lg">
<div className="card-header bg-warning">
<h2 className="text-center fw-bolder text-primary">
Todo List
</h2>
<div className="row my-2">
<div className="input-group">
<input
type="text"
className="form-control"
placeholder="You can add todo Here...."
onChange={(e) => setInputData(e.target.value)}
/>
<button
className="btn btn-success"
onClick={() => {
dispatch(AddTodo(inputData));
setInputData("")
}
>
<i className="fa fa-plus"></i>
</button>
</div>
</div>
</div>
<div className="card-body">
<ul className="list-group text-center fw-bolder">
<li className="list-group-item">Girish</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
);
};
export default Todo;
推荐阅读
- regex - 为什么我的正则表达式会随着更多的运营商而呈指数级增长?
- javascript - 如何让屏幕阅读器完成表列名的播报,暂停再播报列的补充信息?
- java - 为什么这个局部变量在 Java 中等于 null?
- google-apps-script - 根据用户输入搜索正确的范围
- assembly - 程序集打印错误的 ascii 字符
- resharper-9.0 - 为什么 resharper 在文件中添加 // unsed 注释
- html - 我无法点击无序列表中的链接
- node-sass - 使用 NPM 安装包的问题
- javascript - 从本地 API 获取数据
- python - 如何使用 Python 动态创建列表字典