Показать сообщение отдельно
  #1 (permalink)  
Старый 19.10.2020, 17:24
Новичок на форуме
Отправить личное сообщение для alvovich09 Посмотреть профиль Найти все сообщения от alvovich09
 
Регистрация: 19.10.2020
Сообщений: 2

Извлечь объект из массива и использовать ключ и значение
Всем привет! Столкнулся с такой задачей по курсу React. Нужно извлечь объект из массива и использовать пару ключ-значение. Ключ как уникальный key и значение как value для создания элемента. Хотел использовать _get из lodash, но не получается. Вопрос касается не react, а именно JS, поэтому задаю вопрос здесь.

class Component extends React.Component {
  constructor(props) {
      super(props);
    this.state = {
      value: 0,
      logs: []
    };
   }
  
  increment = () => {
   const { value, logs } = this.state; 
     const currentNumber = value + 1;
     const uniqKey = _.uniqueId();
     this.setState({ value: currentNumber, logs: [{ [uniqKey]: currentNumber}, ...logs] });
 };

 decrement = () => {
   const {value, logs } = this.state;
     const currentNumber = value - 1;
     const uniqKey = _.uniqueId();
     this.setState({ value: currentNumber, logs: [{ [uniqKey]: currentNumber}, ...logs] });
 };

  removedItem = (uniqKey) => (e) => {
     e.preventDefault();
     const newLogs = this.state.logs.filter(log => log.uniqKey !== uniqKey);
     this.setState({ logs: newLogs });
   };
  
  render() {
    const { value, logs } = this.state;
    return (
        <div>
        <div className="btn-group" role="group">
        <button type="button" className="btn hexlet-inc" onClick={this.increment}>+</button>
        <button type="button" className="btn hexlet-dec" onClick={this.decrement}>-</button>
    </div>
      { logs.length > 0 &&
      <div className="list-group">
     {logs.map(_.get(log) => <button type="button" onClick={this.removedItem(uniqKey)} className="list-group-item list-group-item-action" key={uniqKey}>{log}</button>)}
      </div>}
    </div>
    );
  } 
}
Ответить с цитированием