繁体   English   中英

在Redux中,将数据发布到服务器的最佳方法是什么?

[英]In Redux, what is the best way to post data to a server?

我想将数据发布到服务器..我的行为是这样的:

export function addNewTodo(text) {
  return {
    type: 'ADD_NEW_TODO',
    payload: addNewTodoApi(text)
  };
}

let addNewTodoApi = function(text) {
  return new Promise(function(resolve, reject) {
    //implement fake method for get data from server
    setTimeout(function () {
      resolve({
        text:     text,
        done:     ??,
        assignTo: ??,
        Project:  ??,
        Category: ??,
        id:       ??
      });
    }, 10);
  });
};

我有三种方式。 第一种方法是导入存储,并在我的操作中调用getState方法,第二种方式是在reducer中调度操作,最后一种方法是将我的操作中的所有数据作为参数传递。 哪一个是正确的? 我读了这个问题 ,我很担心反模式。

您应该考虑使用import { connect } from 'react-redux'并使用containers

您可以在功能mapStateToProps上访问您的商店,从容器中发送您的操作的所有数据。

它的签名是

const mapStateToProps = (state, ownProps) => {}

在那里,你得到的state ,其一部分可以被传递到你的行动。

该动作使用ajax对你从api传递的数据执行发布到你的api。

在您的操作中,您可以考虑使用isomorphic-fetch

快速举例:

import 'isomorphic-fetch'

const postData = ()=> ({
  type: types.POST_YOURACTION,
  payload: new Promise((resolve, reject) => {
    fetch(api.postData(), {method: 'POST', }).then(response => {
      resolve(response.json())
    })
  })
})

如果您需要直接访问商店,可以使用.getState() ,直接访问状态可以被视为反模式,但它实际上取决于您的体系结构设计。 我建议看看mapStateToProps

如何访问您的商店的示例。

import store from 'app/store'
store.getState().yourReducer.data

我总是使用第三种方式,将数据传递给动作。 数据可以是store.getState()中的数据,也可以是params或从服务器获取数据所需的任何数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM