我正在 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/