3

我正在使用 React 中的 Redux。我在程序中定义了动作和减速器。我想通过 onClick 事件改变状态,但它没有改变。

这是我的代码:

import React, { Component, PropTypes } from 'react';
import { createStore } from 'redux';

const display = (state=0, action) => {
  switch (action.type){
    case 'INCREMENT':
      return state+1;
    case 'DECREMENT':
      return state-1;
    default:
      return state;
  }
};

const store = createStore(display);

store.dispatch({ type: 'INCREMENT'});

var ReduxApp = React.createClass({

  plus(){
    return store.dispatch({type: 'INCREMENT'});
  },

  minus(){
    return store.dispatch({type: 'DECREMENT'});
  },

  render(){

    return(
      <div>
        <h1>{store.getState()}</h1>
        <button onClick={this.plus}>+</button>
        <button onClick={this.minus}>-</button>
      </div>
    );
  },
});

module.exports = ReduxApp;

store.subscribe(() => render(<ReduxApp />));

我尝试使用订阅方法并重新渲染,但它不起作用。

4

1 回答 1

2

你快到了,你还没有将渲染连接到你的 Redux 存储,但你已经接近了。

要手动连接它,你会写这样的东西

store.subscribe(() => render(<MyComponent />, document.querySelector('#container'));

使用您的示例,这不应该组件内部发生,而是从外部发生。

var MyComponent = React.createClass({});
store.subscribe();

在现实世界的场景中,您将使用 react-redux 之类的东西和它的 Provider 组件来将商店连接到您的 React 应用程序。

于 2015-12-22T05:57:35.397 回答