2015-12-22 30 views
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 />)); 

我試圖與subscribe方法&重新渲染,但它不工作。

+0

你可以顯示你的訂閱和重新渲染代碼? –

+0

我編輯了代碼。請看看它。 @MichelleTilley –

+0

不應該在你調用它的地方調用代碼'store.subscribe()'和'this.render()'。 –

回答

2

你快到了,你還沒有將渲染連接到你的Redux商店,但你離得很近。

將其連接,手動你會寫這樣的事情

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

使用你的例子這應該從組件內,但來自外部的發生。

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

在真實的場景中,你會用什麼樣的反應,終極版和它的供應商組件,以店內連接到您的應用程序作出反應。

+0

好的。謝謝。我改變了我的code.please看看它。 &我收到錯誤「渲染未定義」。 –

+0

複製粘貼代碼並不總是有用 - 將'render'改爲'React.render'。 –

+0

出錯。如果你能詳細說明,這將有所幫助 –