【发布时间】:2018-07-04 05:50:03
【问题描述】:
我正在做一个简单的待办事项应用程序,用户可以在字段中输入他们的待办事项,然后点击提交以查看它是否已添加到待办事项列表中。
一旦使用 'this.setState({newTodo: ''})' 提交表单,我已经设法清除状态(再次点击提交将添加一个空的待办事项);
但是,输入字段中的文本不会被清除。
const TodoItem = ({ text }) => <li>{text}</li>;
class App extends Component {
constructor(props) {
super(props);
this.state = {
todos: ['walk dog', 'feed cat'],
newTodo: ''
};
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(e) {
e.preventDefault();
const todos = [...this.state.todos, this.state.newTodo];
this.setState({ todos, newTodo: '' });
}
render() {
const { newTodo } = this.state;
const todos = this.state.todos.map((todo, index) => <TodoItem key={index} text={todo} />);
return (
<div className="App">
<form onSubmit={this.handleSubmit}>
<h1>Simple Todo App</h1>
<input
type="text"
name="newTodo"
value={this.newTodo}
onChange={e => this.setState({ [e.target.name]: e.target.value })}
/>
<ol>
{todos}
</ol>
<button>SAVE</button>
</form>
</div>
);
}
}
export default App;
感谢您的任何帮助。
【问题讨论】:
-
将输入字段值属性更改为 value={newTodo}。不要使用 this.newTodo。
-
@HemadriDasari 非常感谢您解决了这个问题!
-
只是更改 value={newTodo} 解决了您的问题?我不这么认为,因为您将空的 newTodo 状态传递给 handleSubmit 中的 todos 数组,这将创建空的 todo-item
标签: javascript reactjs state