Моя кнопка ввода не будет выдвигать элементы в список (React JS)

Итак, я пытаюсь создать приложение списка с помощью React. У меня нет ошибок или предупреждений, и моя панель ввода отображается, но мой текстовый список не отображается. Другими словами, когда я нажимаю Enter, текстовая информация, которую я помещаю в панель ввода, не создает список, как ожидалось. Я пытался использовать keyCode === 13 и onKeyDown, но это никак не повлияло на приложение. Что я упускаю?

Вот мой код:

отфильтрованный input.js

import React, { Component } from "react";
import "./filtered-input.css";
import ItemList from "./item-list";

export class FilteredInput extends Component {

 constructor(props) {
  super(props);
   this.state = {
   textList: [],
  };
 }


handleChangeEvent(e) {
this.setState({ value: e.target.value });
}

handleAdd = (e) => {
if (e.keyCode === 13) {
  let lists = this.props.state.textList;
  lists.push(this.props.state.value);
  this.setState({ textList: lists });
 }
};

render() {

console.info("Here comes state -->");
console.info(this.state);

return (
  <div>
    <input
      className = "filtered-input-box"
      type = "text"
      onKeyDown = {this.props.handleAdd}
      value = {this.state.value}
      onChange = {this.props.handleChangeEvent}
    />
    <ItemList item = {this.state.textList}></ItemList>
  </div>
  );
 }
}

ItemList.js

import React, { Component } from 'react';


export class ItemList extends Component {
render() {
const items = this.props.item.map((item) =>
    <li>{item}</li>
);

return (
        <ul>
            {items}
        </ul>
    );
   }
 }

export default ItemList;

App.js

import React, { Component } from 'react';
import { FilteredInput } from './filtered-input.js';

export class App extends Component {
  render() {

    return (

        <div>

            <p>This page demonstrates a component that maintains its own state.</p>

            <FilteredInput />


        </div>

      );

     }

   }
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кое-где были небольшие синтаксические ошибки, в остальном все выглядит идеально:

import React, { Component } from "react";
import "./style.css";

export default class App extends Component {
  render() {
    return (
      <div>
        <p>This page demonstrates a component that maintains its own state.</p>

        <FilteredInput />
      </div>
    );
  }
}

class FilteredInput extends Component {
  constructor(props) {
    super(props);
    this.state = {
      textList: [],
      value: ""
    };
  }

  handleChangeEvent = e => {
    console.info(e.target.value);
    this.setState({ value: e.target.value });
  };

  handleAdd = e => {
    console.info("hi");
    if (e.keyCode === 13) {
      let lists = this.state.textList;
      lists.push(this.state.value);
      this.setState({ textList: lists });
    }
  };

  render() {
    console.info("Here comes state -->");
    console.info(this.state);

    return (
      <div>
        <input
          className = "filtered-input-box"
          type = "text"
          onKeyDown = {this.handleAdd}
          value = {this.state.value}
          onChange = {this.handleChangeEvent}
        />
        <ItemList item = {this.state.textList} />
      </div>
    );
  }
}

class ItemList extends Component {
  render() {
    const items = this.props.item?.map(item => <li>{item}</li>);

    return <ul>{items}</ul>;
  }
}

Полноценное рабочее приложение: Stackblitz

Оно работает! но только если я не включаю "?" в переменной const items. С какой целью???

Dominic 15.12.2020 22:03
?. это называется необязательная цепочка, подробнее об этом можно прочитать здесь: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Ketan Ramteke 15.12.2020 22:06

Другие вопросы по теме