2016-10-27 50 views
0

我是新的redux。爲了簡單起見,我嘗試使用Redux顯示全局狀態值。行動不被稱爲redux

當試圖在控制檯中看到操作對象時,我得到「Object {type:」@@ redux/INIT「}」。這是什麼 ?

這裏是我的簡單的代碼:

import React, {Component} from 'react'; 
import ReactDOM from 'react-dom'; 
import {createStore} from 'redux'; 
import {Provider, connect} from 'react-redux'; 

class AllinOne extends Component{ 
    render(){ 
    return (
     <div>k 
     {this.props.globalState} 
     </div> 
    ) 
    } 
} 


const store = createStore(myREducer); 
store.dispatch(add); 

const mapStateToProps = (globalState) => { 
    return { globalState: globalState } 
} 


// Action 
const add =() => { 
    return {type : 'ADD'} 
} 

// Reducer 
function myREducer(state=0, action) { 
    console.log('counter', action) // returns Object {type: "@@redux/INIT"} 

    return state; 
} 

export default connect (mapStateToProps)(AllinOne); 
ReactDOM.render(<AllinOne />, document.getElementById('app')) 

回答

1

您所看到的動作是狀態的初始化。事後應調派add行動。

有多個點,可能是導致您的問題:

首先,add在聲明前被派出,所以也許你叫dispatch(undefined)這什麼都不做。但這可能只是您的示例中的複製粘貼問題。

更重要的是,add是一個函數,它應該是一個對象。所以,你應該嘗試使用:

// Action 
const add = {type : 'ADD'} 
+0

謝謝......還有一件事......當我試圖寫ES6格式功能減速器: 常量myREducer =(= 0的狀態,動作)=> { 。 .. } 它說:期待reducer是一個功能。爲什麼? –

+0

它應該工作。如果它不再是一個訂購問題(在您使用它之後定義的變量),那麼我不知道。 –

+0

這很吸引人。如果你可以設置一個jsFiddle或者一個工作示例,它會很酷。 –