Javascript 将承诺与React Redux一起使用

Javascript 将承诺与React Redux一起使用,javascript,reactjs,redux,react-redux,es6-promise,Javascript,Reactjs,Redux,React Redux,Es6 Promise,我正试图用一些依赖于API调用的项设置我的Redux状态 这就是我目前所拥有的 Api调用-> return new Promise((resolve, reject) => { const _items = []; axios.get(SiteUrl + spQuery).then((response) => { //console.log(response); return response.data.d.results; }

我正试图用一些依赖于API调用的项设置我的Redux状态

这就是我目前所拥有的

Api调用->

return new Promise((resolve, reject) => {
    const _items = [];
    axios.get(SiteUrl + spQuery).then((response) => {
       //console.log(response);
        return response.data.d.results;
    }).then((listItemsData) => {
        ......
        _items.push({...});
        return _items;
    }).then((items) => { 
        resolve(items);
    });
});
在我的componentDidMount()中,我尝试了几种方法,包括->

store.dispatch(addListItem(this.updateSharepointList().then((result) => { return result })));

这两个调用都返回PromiseValue对象(带有
PromiseValue
),但是如果我像
//let test=this.updateSharepointList()。那么((结果)=>{console.log(结果)});

我使用
console.log(test)
就可以了。我取回了物品的数组


我做错了什么

据我所知,问题在于你向行动创造者传递的是承诺,而不是实际价值

当您拥有项目、API调用完成且承诺得到解决时,应该调用action creator

this.updateSharepointList().then((result) => { 
     store.dispatch(addListItem(result)) 
})
如果您使用react,您可以签出“react redux”,您可以签出连接并将动作创建者绑定到您的道具。这是一种更优雅、更容易使用的方法

使用react-redux的示例:

class MyComponent extends Component {
   doSomething() {
     this.updateSharepointList().then((result) => { 
       this.props.addListItem(result);
     })
   }
}

const mapDipatchToProps = (dispatch) => ({
     addListItem: (listItem) => dispatch(addListItem(listItem))
)}

const mapStateToProps = (state) => ({}) // used for getting state from store and mapping it to props 

export default connect(mapStateToProps, mapDispatchToProps)(MyComponent)

你能显示addListItem的内容吗?如果我没弄错的话,它应该会返回一个包含该项目的操作?你是说这个<代码>导出常量addListItem=listItem=>({type:ADD\u listItem,负载:listItem})问题实际上不在Redux中,而是它正在发送一个承诺,而不是
PromiseValue
问题是您将一个承诺传递给动作创建者,您应该做的是调用API,并在成功时调用dispatch,将您作为addListItem接收的项目作为paramWorks,很好!谢谢所以这里的主要问题是
dispatch()
没有等到它的参数完全解决,这就是为什么我得到了我想的全部承诺?编辑:你能给我举个react redux的例子吗?我今天才开始学习redux,所以我几乎什么都不知道。有点像,承诺不会返回一个值,它只返回一个处理程序,当执行该处理程序时,它将执行您的回调。承诺永远不会有回报。很高兴能帮上忙,坚持下去,伙计:)
class MyComponent extends Component {
   doSomething() {
     this.updateSharepointList().then((result) => { 
       this.props.addListItem(result);
     })
   }
}

const mapDipatchToProps = (dispatch) => ({
     addListItem: (listItem) => dispatch(addListItem(listItem))
)}

const mapStateToProps = (state) => ({}) // used for getting state from store and mapping it to props 

export default connect(mapStateToProps, mapDispatchToProps)(MyComponent)