我正在 React 中使用 Redux。我在程序中定义了 Action 和 reducer 。我想通过 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 />));

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

最佳答案

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

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

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

使用您的示例,这不应发生在组件内部,而是发生在外部。
var MyComponent = React.createClass({});
store.subscribe();

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

关于javascript - 状态改变错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34408835/

10-13 08:39