繁体   English   中英

mobx反应创建可观察的商店

[英]mobx-react create observable store

我已经玩了一段时间了,不知道这是不可能的还是我只是缺少ES6,React或MobX中的一些基本知识。

我想在一个单独的文件中有一个mobx存储,如下所示;

import { observable, action } from 'mobx';

export default class Store {

@observable data = [];

@action getAll(){
  this.data = [{
    itemTitle: 'Item One'
  },{
    itemTitle: 'Item Two'
  }]
  return this.data
}

@action pushItem(item){
  this.data.push(item)
}

addAfter5Secs(){
  setTimeout(() => {
    console.log('Item Added')
    this.pushItem({
    itemTitle: 'Item Two'
  })}, 5000)
}

constructor() {
  console.log('Store Created')
  this.getAll();
  this.addAfter5Secs()
}
}

然后,我想将其导入视图中,并在那时创建该商店的实例。

import React from "react";
import { List, Button } from 'semantic-ui-react';
import { observer, inject } from 'mobx-react';
import Store from '../Data/Store';
import DevTools from 'mobx-react-devtools';

const dataItems = new Store

@observer
export default class ScriptsHome extends React.Component {
  render() {
    const items = observer(dataItems)
    return (
        <List>
        {items.data.map((reg, key) => {
          return(
            <List.Item key={key}>
                     <Button content={reg.itemTitle}/>
                </List.Item>)
          })}
          <DevTools />
        </List>
    );
  }
}

我不想从根组件通过提供程序传递它,也不想在导出中使用“ new”关键字实例化商店。 我实际上有数十家商店,所以我只希望根据视图的需要创建它们。

上面的代码将渲染前2个项目,仅在5秒钟后将第3个项目添加到商店中,但是渲染不会自动在组件上触发,因此该项目不会出现。 当我强制渲染功能启动时,它将出现。

我正在使用路由器调用此视图,所以也许这也有问题吗?

我只是在学习Mobx,做出反应等,因此我们将不胜感激。 所有示例似乎只使用一两个商店。

因此,花了一些时间之后,事实证明,MobX根本不是问题。 react和react router的版本似乎是问题所在。 现在使用react router dom很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM