Что эта логика делает в JavaScript? - PullRequest
0 голосов
/ 06 марта 2019

Я учусь реагировать и наткнулся на учебник, в котором добавлена ​​кнопка удаления в JSX и определена функция для выполнения события.Однако я не совсем понимаю, что делает приведенный ниже код.

const deleteList=this.state.list.filter(item=>item.objectID!==id);

В частности, я не совсем понимаю, что означает приведенная ниже логика:

(item=>item.objectID!==id);

Ответы [ 3 ]

3 голосов
/ 06 марта 2019
this.state.list.filter(item=>item.objectID!==id);

Эта часть перебирает все элементы в list и возвращает новый массив, содержащий только элементы, соответствующие условию item.objectID!==id Это общий синтаксис для удаления одного элемента списка.

См. документация из filter метод.

1 голос
/ 06 марта 2019

Для лучшего понимания я объясняю это на примере. см. код ниже: -

import React, { Component } from 'react';

class App extends Component {
  constructor(props) {
    super(props);

    this.state = {
      list: [
        { id: '1', age: 42 },
        { id: '2', age: 33 },
        { id: '3', age: 68 },
      ],
    };
  }

  onRemoveItem = id => {
    this.setState(state => {
      const list = state.list.filter(item => item.objectID !== id);

      return {
        list,
      };
    });
  };

  render() {
    return (
      <div>
        <ul>
          {this.state.list.map(item => (
            <li key={item.objectID}>
              The person is {item.age} years old.
              <button
                type="button"
                onClick={() => this.onRemoveItem(item.objectID)}
              >
                Remove
              </button>
            </li>
          ))}
        </ul>
      </div>
    );
  }
}

export default App;

Выше кода у нас есть массив объектов React (например, objectid и age). при определении методов onRemoveItem id является параметром.

при вызове методов onRemoveItem для события нажатия кнопки в качестве параметра передается item.objectID.

onRemoveItem = id => {
        this.setState(state => {
          const list = state.list.filter(item => item.objectID !== id);

Здесь мы фильтруем элемент из массива состояний React, у которого objectid - это id, а id - это не что иное, как объект, который передается в качестве параметра при вызове метода onRemoveItem .

1 голос
/ 06 марта 2019

Это похоже на

function(item) {
   return item.objectID!==id
}

В основном отфильтровываем все элементы, где id не равен item.objectID

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...