2017-06-26 48 views
0

我是新來的終極版,我越來越瘋狂更新單個值...Redux的減速不更新初始狀態

當我的應用程序啓動它進行地理定位和當它完成我打電話給我的行動更新狀態地理編碼:

操作:

export const UPDATE_LOCATION = 'UPDATE_LOCATION'; 

export function updateLocation(location) { 
    return { 
    type: UPDATE_LOCATION, 
    payload: location 
    }; 
}; 

減速機:

import { UPDATE_LOCATION } from '../actions'; 

const initialState = { 
    location: { 
    latitude: '51.509865', 
    longitude: '-0.118092' 
    } 
}; 

export default function(state = initialState, action) { 
    switch (action.type) { 
    case UPDATE_LOCATION: 
     return Object.assign({}, state, { 
     location: action.payload 
     }); 
    default: 
     return state; 
    } 
} 

Basicall y當我在我的應用程序中嘗試獲得this.props.location.latitude,即使它已被更新,我仍然看到在initialState中設置的值。

組件:

import React, { Component } from 'react'; 
import { connect } from 'react-redux'; 

class Demo extends Component { 
    constructor(props) { 
    super(props); 

    // never updated by Redux... 
    console.log(props.location.latitude); 
    } 

    render() { 
    return (
     <div> 
     ... 
     </div> 
    ); 
    } 
} 

function mapStateToProps(state) { 
    return { 
    location: state.location.location // I don't know why location is set twice... 
    }; 
} 

export default connect(mapStateToProps)(Demo); 

this.props.updateLocation(data)運行在不同的分量,我能看到正確的數據進入減速...

您可以在光開關給我嗎?謝謝

回答

0

我希望這真的很簡單,因爲mapStateToProps看起來應該抓取state.location而不是state.location.location

另外,您的console.log位於您的構造函數中。因此,它只被調用一次,不會在任何後續更新之後調用。如果您需要進一步調試,我會嘗試在演示組件中添加一個記錄器到componentWillReceiveProps()

相關問題