Javascript 如何访问未定义的对象?

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

我试图在ReactJS中创建一个简单的待办事项列表,当代码运行时,我很难理解一些代码

我的应用程序由3个组件组成,即:

  • index.js-应用程序的入口点
  • TodoList.js-呈现表单、按钮和TodoItem.js组件
  • TodoItem.js—映射到输入文本并显示列表的实际列表
  • My TodoList.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”导入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如何工作?我还没有定义对象