正如您所看到的,我使用react-redux
执行todo。我的应用程序运行得很好,但问题是,当我点击添加按钮时,输入值没有被清除。我该如何解决这个问题?
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;
我在应用程序中导入,应用程序是主要组件。我能做些什么来解决我的问题?
发生这种情况是因为您在dispatch
:内部使用setInputData("")
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;
尝试更改您的点击。
onClick={() => {dispatch(AddTodo(inputData)); setInputData("")}}
您的setInputData
在调度函数中。
您可以创建一个onClick处理程序来解决此问题。
const handleClick = () => {
dispatch(AddTodo(inputData);
setInputData("");
}
<button onClick={handleClick}></button>
我得到了答案,我应该添加use值={inputData}我的意思是
<input
type="text"
className="form-control"
placeholder="You can add todo Here...."
value={inputData}
onChange={(e) => setInputData(e.target.value)}
/>
这是的答案