自己的计时器组件反应,回流不工作

时间:2015-05-31 18:52:46

标签: javascript reactjs refluxjs

我试着习惯回流并分叉一个例子回购。我的完整代码在[https://github.com/svenhornberg/react-starterkit]

我想创建一个计时器组件,它从时间存储中获取当前时间,但它不起作用。 DevTools没有显示任何错误。这肯定是一些新手的错误,但我找不到它们。

Edit1 :我在主页// edit1

中添加了一行

Edit2 :我认为错误可能出在home.jsx中的componentDidMount

已修复我需要触发我的时间,看看我的回答。

商品

import Reflux from 'reflux';
import TimeActions from '../actions/timeActions';

var TimeStore = Reflux.createStore({
    listenables: timeActions,

    init() {
        this.time = '';
    },

    onCurrenttime() {
        this.time = '13:47';
    }
});

导出默认的TimeStore;

操作

import Reflux from 'reflux';

var TimeActions = Reflux.createActions([
  'currenttime'
]);

export default TimeActions;

组件

import React from 'react';

class Timer extends React.Component {

  constructor(){
    super();    
  }

  render() {
    var time = this.props.time;

    return (
      <div>
        { time }
      </div>
    );
  }

}

Timer.propTypes = {
  time : React.PropTypes.string
}

export default Timer;

我想在 home.jsx

中使用计时器组件
import React from 'react';
import ItemList from '../components/itemList.jsx';
import ItemStore from '../stores/itemStore';
import ItemActions from '../actions/itemActions';

import Timer from '../components/timer.jsx';
import TimeStore from '../stores/timeStore';
import TimeActions from '../actions/timeActions';

class Home extends React.Component {

  constructor(props){
    super(props);
    this.state = {
      items : [],
      loading: false,
      time : '' //edit1
    };
  }

  componentDidMount() {
    this.unsubscribe = ItemStore.listen(this.onStatusChange.bind(this));
    this.unsubscribe = TimeStore.listen(this.onStatusChange.bind(this));

    ItemActions.loadItems();
    TimeActions.currenttime();
  }

  componentWillUnmount() {
    this.unsubscribe();
  }

  onStatusChange(state) {
    this.setState(state);
  }

  render() {

    return (
      <div>
        <h1>Home Area</h1>
        <ItemList { ...this.state } />
        <Timer { ...this.state } />
      </div>
    );
  }
}

export default Home;

1 个答案:

答案 0 :(得分:1)

我修复了它,感谢:How to Make React.js component listen to a store in Reflux

我必须触发我的时间:

var TimeStore = Reflux.createStore({
    listenables: TimeActions,

    init() {
        this.time = '';
    },

    onCurrenttime() {
      this.trigger({
        time : '13:47'
      });
    }
});