Pull to refresh

Comments 2

Шикарная библиотека! Можно в 5 строчек расширить стандартный реактовский компонент и спокойно мутировать стейт не боясь побочных эффектов.

import React, { Component } from "react";
import produce from "immer";

class ImmerComponent extends Component {
  editState(fn) {
    this.setState(produce(fn));
  }
}

class List extends ImmerComponent {
  state = [];

  addItem = () => {
    this.editState(state => {
      state.push(state.length);
    });
  };

  render() {
    const list = this.state.map(item => {
      <li key={item}>
        {item}
      </li>;
    });

    return (
      <div>
        <ul>
          {list}
        </ul>
        <button onClick={this.addItem}>Add</button>
      </div>
    );
  }
}

Sign up to leave a comment.