我是Redux的新手,我想我开始了解它们的工作原理,但是在将数据存储到Store中时遇到了一些最初的问题。

我相信我已经接近了,但是有一些我没有得到。任何帮助表示赞赏!

我之所以需要此功能,是因为我还有其他可以处理相同数据的组件,因此我认为最好将数据保留在Redux Store中。如果还有其他解决方法,请赐教。

行动:

import fetch from "isomorphic-fetch";

export const LOAD_DATA     = "LOAD_DATA";

function getApiUrl() {
return `${window.appDefaultState.url.baseUrl}/api`;
}

export function loadStoresData() {
  return function(dispatch) {
    dispatch({
      type: LOAD_DATA,
      stores: data
    });
fetch(
  getApiUrl(),
  {
    method: "post",
    credentials: 'same-origin',
    body: JSON.stringify({
      form_key: window.appDefaultState.formKey,
      "cms/stores": 1
    })
  }
)
.then(response => response.json())
.then(json => {
  console.log("fetched data in actions")
  let data = json["cms/stores"];
  console.log(data);
  dispatch({
    type: LOAD_DATA,
    stores: data
  });
})
.catch(e => {
  console.log(e)
});
}
}

function getSuccess(data) {
  console.log("getSuccess worked")
  return (
    type: LOAD_DATA,
    stores: data
  )
}


减速器:

import {
  LOAD_DATA
} from "actions/storelist.js";

function initialState() {
  return Object.assign({}, {
    stores: {},
  }, window.appDefaultState.storeList);
}

export default function storeList(state, action) {
  if (!state) {
    state = initialState();
}

switch (action.type) {
  case LOAD_DATA:
    return Object.assign({}, state, {
      stores: action.data
  });
  break;
}

return state;
}


组件(相关零件):

import { connect }                  from "react-redux";
import { loadStoresData }           from "actions/storelist.js";

const actions = {
  loadStoresData
}

const mapStateToProps = (state, ownProps) => {
  return Object.assign({
    stores: state.stores
}, ownProps);
};

export default connect(mapStateToProps, actions)(StorePage);

最佳答案

您在data字段中调度stores,因此应该

switch (action.type) {
  case LOAD_DATA:
    return Object.assign({}, state, {
      stores: action.stores
    });
}


action.data替换为action.stores

关于javascript - 为什么这些数据没有发送到Redux?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48983408/

10-12 12:55
查看更多