更新Redux状态的正确方法

时间:2018-09-07 14:40:01

标签: reactjs redux

我一直在寻找更新Redux状态的正确方法。

当前我正在做的就是这样调用我的redux动作

import {fetchCoin, updateCrypto} from "../actions/cryptoAction.js"
     componentDidMount() {
        this.socket = openSocket('https://coincap.io');
        this.props.fetchCoin()
     }

然后这样称呼

const mapStateToProps = state => {
  return {
    cryptoLoaded: state.posts.itemsSucess,
    cryptoLoading: state.posts.itemsFetching,
  }
};

export default connect(mapStateToProps, {fetchCoin, updateCrypto, CurrencyRate})(cryptoTicker);

接着在componentDidUpdate

中像这样进行更新
 updateCoinData = [...this.props.cryptoLoaded];
     this.setState({updateCoinData: true})
    }

  this.socket.on('trades', (tradeMsg) => {

  for (let i=0; i< updateCoinData.length; i++) {


    if (updateCoinData[i]["short"] == tradeMsg.coin ) {

    updateCoinData[i]["price"] = tradeMsg['message']['msg']['price']
   this.props.updateCrypto(updateCoinData);

我的更新操作就是这样

export const updateCrypto = (updatedData) => {
  return function (dispatch) {
    dispatch({
      type: UPDATE_CRYPTO_DATA,
      payload: updatedData
    })
  }
}

在reducer中,我存储成功状态的地方是我更改新值的地方

 case CRYPTO_FETCH_SUCESS:
      return {
        ...state,
        itemsSucess: action.payload,
        itemsFetching: false
      }
   case UPDATE_CRYPTO_DATA:
      return {
      ...state,
      itemsSucess: action.payload,
      itemsFetching: false
      }

现在,虽然此更新,但是有人告诉我我正在滥用Redux,并且无法正确更新我的状态。那么可以告诉我,这种实际上不正确的方法来更新redux状态吗?如果不是这样的话,理想的方法应该是什么?

0 个答案:

没有答案