Javascript 如何访问未定义的对象?
我试图在ReactJS中创建一个简单的待办事项列表,当代码运行时,我很难理解一些代码 我的应用程序由3个组件组成,即:Javascript 如何访问未定义的对象?,javascript,reactjs,Javascript,Reactjs,我试图在ReactJS中创建一个简单的待办事项列表,当代码运行时,我很难理解一些代码 我的应用程序由3个组件组成,即: index.js-应用程序的入口点 TodoList.js-呈现表单、按钮和TodoItem.js组件 TodoItem.js—映射到输入文本并显示列表的实际列表 My TodoList.js组件: import React, { Component } from "react"; import TodoItems from "./TodoItems"; class Todo
import React, { Component } from "react";
import TodoItems from "./TodoItems";
class TodoList extends Component {
constructor(props) {
super(props);
this.state = {
items: []
};
this.addItem = this.addItem.bind(this);
}
addItem(e) {
if (this._inputElement.value !== "") {
var newItem = {
text: this._inputElement.value,
key: Date.now()
};
this.setState(prevState => {
return {
items: prevState.items.concat(newItem)
};
});
}
//console.log(this._inputElement.value);
this._inputElement.value = "";
e.preventDefault();
}
render() {
return (
<div className="todoListMain">
<div className="header">
<form onSubmit={this.addItem}>
<input
ref={a => (this._inputElement = a)}
placeholder="enter task"
></input>
<button type="submit">add</button>
</form>
</div>
<TodoItems entries={this.state.items} />
</div>
);
}
}
export default TodoList;
import React, { Component } from "react";
class TodoItems extends Component {
createTasks(itemmm) {
return <li key={itemmm.key}>{itemmm.text}</li>;
}
render() {
var todoEntries = this.props.entries;
var listItems = this.props.entries.map(this.createTasks);
// console.log(this.props.entries);
return <ul className="theList">{listItems}</ul>;
}
}
export default TodoItems;
import React,{Component}来自“React”;
从“/TodoItems”导入TodoItems;
类TodoList扩展组件{
建造师(道具){
超级(道具);
此.state={
项目:[]
};
this.addItem=this.addItem.bind(this);
}
增补(e){
if(this.\u inputElement.value!==“”){
var newItem={
text:this.\u inputElement.value,
关键字:Date.now()
};
this.setState(prevState=>{
返回{
项目:prevState.items.concat(新项目)
};
});
}
//console.log(this.\u inputElement.value);
此项。_inputElement.value=“”;
e、 预防默认值();
}
render(){
返回(
(this.\u inputElement=a)}
占位符=“输入任务”
>
添加
);
}
}
将默认值导出到列表;
TodoItems.js组件:
import React, { Component } from "react";
import TodoItems from "./TodoItems";
class TodoList extends Component {
constructor(props) {
super(props);
this.state = {
items: []
};
this.addItem = this.addItem.bind(this);
}
addItem(e) {
if (this._inputElement.value !== "") {
var newItem = {
text: this._inputElement.value,
key: Date.now()
};
this.setState(prevState => {
return {
items: prevState.items.concat(newItem)
};
});
}
//console.log(this._inputElement.value);
this._inputElement.value = "";
e.preventDefault();
}
render() {
return (
<div className="todoListMain">
<div className="header">
<form onSubmit={this.addItem}>
<input
ref={a => (this._inputElement = a)}
placeholder="enter task"
></input>
<button type="submit">add</button>
</form>
</div>
<TodoItems entries={this.state.items} />
</div>
);
}
}
export default TodoList;
import React, { Component } from "react";
class TodoItems extends Component {
createTasks(itemmm) {
return <li key={itemmm.key}>{itemmm.text}</li>;
}
render() {
var todoEntries = this.props.entries;
var listItems = this.props.entries.map(this.createTasks);
// console.log(this.props.entries);
return <ul className="theList">{listItems}</ul>;
}
}
export default TodoItems;
import React,{Component}来自“React”;
类TodoItems扩展组件{
createTasks(itemmm){
返回{itemmm.text} ;
}
render(){
var todoEntries=this.props.entries;
var listItems=this.props.entries.map(this.createTasks);
//console.log(this.props.entries);
return{listItems}
;
}
}
将默认值导出到doitems;
有什么问题?
1)我很难理解如何返回{itemmm.text} 代码>
工作,因为“itemmm”是一个随机参数,我已经通过了,“itemmm.text”如何正确显示文本,根据我的理解,“itemmm”是一个模糊的对象,我没有在任何地方定义它
2)我的“TodoList.js”组件中代码行的重要性。到目前为止,我理解它是使用道具动态输入值。但是它是如何修补TodoItem.js组件的呢
谢谢你的阅读,如果这是一个太基本的问题,对不起。任何帮助都会非常感激。1.理解“itemmm”是一个模糊的对象
createTasks(itemmm) {
return <li key={itemmm.key}>{itemmm.text}</li>;
}
逻辑从这里开始
您以[{key:23213123,text:'xyz'}]的形式获得项
var listItems = this.props.entries.map(this.createTasks);
这里itemmm
是参数,您可以用任何名称定义它
项目作为道具传递到TodoItems
到条目中
Abhinav您将项目作为道具在条目中传递,当您在数组上映射时,有一个回调函数,它是createTask
createTasks(itemmm) {
return <li key={itemmm.key}>{itemmm.text}</li>;
}
这与我在下面指定的内容相同
this.props.entries.map((itemmm)=>{
return <li key={itemmm.key}>{itemmm.text}</li>;
});
this.props.entries.map((itemmm)=>{
返回{itemmm.text} ;
});
关于第1点,是的,我们可以传递任何名称,但它如何访问itemm.text?它不是我定义的对象。我有一个名为“items”的对象itemm.text如何工作?我还没有定义对象