gpt4 book ai didi

javascript - React 中的 "Cannot read property ' 映射 ' of undefined",这里出了什么问题?

转载 作者:行者123 更新时间:2023-12-01 01:00:07 25 4
gpt4 key购买 nike

我正在尝试了解 Prop ,所以如果这是一个愚蠢的错误,请原谅我。我试图将所有数据传递到一个变量中,并将其传递到 props 中(使用 {item.text} 和 {item.key} ),但是,我的“.map”没有获取任何内容,并且有一堆错误,我的代码出了什么问题?

问题就出在这段代码中

      createList(list) {
return <li>{list.text}</li>
}

render() {

var entries = this.state.list
var finalEntries = entries.props.map(this.createList)

这是完整的代码

    import React from "react";
import "./App.css";
import { isTemplateElement } from "@babel/types";

class TodoListt extends React.Component {
state = {};

constructor(props) {
super(props);

this.state = {
userInput: "",
list: [],
};
}

changeUserInput(input) {
this.setState({
userInput: input
})
}


addToList(input) {
let listArray = this.state.list;
listArray.push(input);
var newItem = {
text: listArray,
key: Date.now()
};

this.setState(prevState => {
return {
list: prevState.list.concat(newItem)
};
});

this.setState({
list: listArray
})


}

createList(list) {
return <li>{list.text}</li>
}

render() {

var entries = this.state.list
var finalEntries = entries.props.map(this.createList)


return (
<div className="to-do-list-main">
<input
onChange={(e) => this.changeUserInput(e.target.value)}
value={this.state.userInput}
type="text"
/>
<button onClick={() => this.addToList(this.state.userInput)}>Press me</button>
<ul>
{this.testingSetup()}
</ul>
</div>
);
}
}

export default TodoListt;

最佳答案

您可以使用展开运算符添加到现有数组。只需将一个新对象添加到状态数组中,然后清除用户输入,为另一个项目做好准备。根据您的代码,这是一个添加到状态列表的简单示例(我自己没有运行过,所以只需检查语法错误等):

import React from "react";
import "./App.css";
import { isTemplateElement } from "@babel/types";

class TodoList extends React.Component {
state = {};

constructor(props) {
super(props);

this.state = {
userInput: "",
list: [],
};
}

changeUserInput(input) {
this.setState({
userInput: input
})
}


addToList() {
const { list, userInput } = this.state;
// Add item to state list using spread operator and clear input
this.setState({
list: [...list, {text:userInput, key: Date.now()}],
userInput: ""
});
}

render() {
return (
<div className="to-do-list-main">
<input
onChange={(e) => this.changeUserInput(e.target.value)}
value={this.state.userInput}
type="text"
/>
<button onClick={() => this.addToList()}>Press me</button>

<hr/>

{/* For each item in the list, render the contents */}
{this.state.list.map(item => (
<div key={item.key}>
<h3>{item.text}</h3>
<p>Time: {item.key}</p>
</div>
))}

</div>
);
}
}

export default TodoList;

关于javascript - React 中的 "Cannot read property ' 映射 ' of undefined",这里出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56159321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com