javascript - 我的 React Js 任务列表项目中的第一个任务总是未定义
问题描述
我一直在创建一个 React js 项目,它是一个任务列表。但是我一直面临一个错误,由于某种原因我发现了多个错误。首先出于调试目的,我创建了一个句柄删除函数,它将一个字符串记录到控制台以显示它已被触发。它仅在单击任务元素上的 X 按钮时触发,但是,每当我提交文本输入以创建新任务时它都会触发。其次,最大的错误是无论我输入什么,第一个元素总是未定义的。我该如何解决这个问题。
import React, { Component } from "react";
import ReactDOM from "react-dom";
import TaskList from "./index2";
class Tests extends Component {
constructor(props) {
super(props);
this.state = {
value: "",
object: {},
object2: [],
};
this.updateInputValue = this.updateInputValue.bind(this);
this.submit = this.submit.bind(this);
}
updateInputValue(evt) {
this.setState({
value: evt.target.value,
});
}
submit() {
if (this.state.value.trim() != "") {
this.setState({
object: { task: this.state.value.trim(), id: Date.now },
object2: [...this.state.object2, this.state.object],
value: "",
});
} else {
return;
}
}
render() {
return (
<div>
<label for="text">Text 1</label>
<br />
<input
type="text"
label="text"
onChange={(evt) => this.updateInputValue(evt)}
onSubmit={this.submit}
value={this.state.value}
/>
<br />
<button onClick={this.submit} style={{ height: 50, width: 60 }}>
Submit
</button>
<br></br>
<TaskList
allTasks={this.state.object2}
handleDeleteFunction={console.log("handle delete has been triggered")}
/>
</div>
);
}
}
export default Tests;
ReactDOM.render(<Tests />, document.getElementById("root")
);
还有我的任务列表代码
import React from "react";
import "./woah.css";
export default function TaskList({ allTasks, handleDeleteFunction }) {
return (
<ul>
{allTasks.map(({ task, id }) => (
<li key={id} id="task">
<p>{task}</p>
<button onClick={() => handleDeleteFunction}>X</button>
</li>
))}
</ul>
);
}
解决方案
尝试这个:
submit() {
if (this.state.value.trim() != "") {
const newObj = { task: this.state.value.trim(), id: Date.now };
this.setState({
object: newObj,
object2: [...this.state.object2, newObj],
value: "",
});
} else {
return;
}
}
您正在引用状态为空的当前对象。
推荐阅读
- python - Pandas DataFrame 耗时太长
- python - 游标在 PyMySQL 中起什么作用和作用?
- javascript - "object HTMLDivElement" with outerHTML and with replaceWith() does nothing
- sql - 非 .NET 前端客户端上的 SSRS 嵌入式报告
- python - 使“if”中的函数仅在条件为真时才采取行动
- node.js - “this”类型的参数不能分配给参数“Construct”
- c# - 将特定标签助手元素名称标记为已过时
- flutter - 如何从每个名称而不是每个 ID 的可搜索下拉列表中搜索项目?
- python - 如何从 gdb 会话中提取 numpy 数组值?
- python - Pytorch 中的 LSTM:如何添加/更改序列长度维度?