javascript - 如何在 Mobx + reactjs 中使用@Action?

标签 javascript reactjs mobx mobx-react

我对如何在我的代码中使用@action 感到困惑。

class Items {

  @observable items= [];

  @action addItem() {
    let newItem= new Item();
    items.push(newItem);
  }
}

@observer
class ItemPage extends Component {

  constructor() {
    super();
  }

  render() {
    const {addItem} = this.props.store;
    return (
      <div className="items">
        <input type="button" value="add" onClick={addItem}/>
      </div>
    )
  }
}

const store = new Items();

最佳答案

确保您更改的是 this.items 而不仅仅是 items。您还需要使用 action.bound 绑定(bind)操作或在组件中创建绑定(bind)处理程序:

class Items {
  @observable items= [];

  @action.bound
  addItem() {
    let newItem = new Item();
    this.items.push(newItem);
  }
}

@observer
class ItemPage extends Component {
  render() {
    const { addItem } = this.props.store;
    return (
      <div className="items">
        <input type="button" value="add" onClick={addItem}/>
      </div>
    );
  }
}

const store = new Items();

或者:

class Items {
  @observable items= [];

  @action
  addItem() {
    let newItem = new Item();
    this.items.push(newItem);
  }
}

@observer
class ItemPage extends Component {
  handleClick = () => {
    this.props.store.addItem();
  };
  render() {
    return (
      <div className="items">
        <input type="button" value="add" onClick={this.handleClick}/>
      </div>
    );
  }
}

const store = new Items();

关于javascript - 如何在 Mobx + reactjs 中使用@Action?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44059451/

相关文章:

javascript - 如何安全地连接到另一台服务器上的 MySQL 数据库?

javascript - 如何在 Bootstrap DateTimePicker 中禁用时间?

reactjs - 一个 React-Redux Action 更新多个Reducers

javascript - 仅在 react 组件渲染功能之外使用 mobx 存储

javascript - mobX - 过滤 react native 的国家?

Javascript TypeError : . ..不是构造函数 - 如何从构造函数创建构造函数?

javascript - 我到底需要在 `script` 元素中转义什么?

javascript - 如何有条件地格式化 react 管理中字段的标签?

reactjs - 如何在移动到下一个屏幕之前等待 React useEffect Hook 完成

javascript - 关于 React-Mobx 中 Action 需求的问题