【发布时间】:2016-12-13 09:21:33
【问题描述】:
我想知道,我该怎么做才能在 fetch 中调用 promise 中的函数?
请注意这一行:.then(json => this.processReq(json))
我必须使用this.,因为如果不是这样,processReq 就是undefined。不应该是这样的:.then(json => processReq(json)) 因为 ES6 吗??
这是我的代码(我正在使用 Babel ES6 和 React):
import React, { Component, PropTypes } from 'react'
import fetch from 'isomorphic-fetch'
export default class Batchprodpry extends Component {
constructor(props) {
super(props) {
.
.
.
processReq(json) {
Object.keys(json).forEach(item => {
if (item === 'error') {
Object.keys(json[item]).forEach(propry => {
alert('Conflicto! '+'\n'+
'Id: ' + JSON.stringify(json[item][propry]['propryid'])+'\n'+
'Id Operador: ' + JSON.stringify(json[item][propry]['fkempid'])+'\n'+
'Hora inicio: ' + JSON.stringify(json[item][propry]['propryhoraini'])+'\n'+
'Hora fin: ' + JSON.stringify(json[item][propry]['propryhorafin']))
})
}
})
}
.
.
postForm() {
let maq = this.state.obj['fkmaqid']
return fetch(`/scamp/index.php/batchprodpry/${maq}`, {
method: 'POST',
credentials: 'same-origin',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(this.state.a)
})
.then(req => {
if (req.status >= 400) {
throw new Error("Bad response from server")
}
return req.json()
})
.then(json => this.processReq(json))
.catch(function(error) {
console.log('request failed', error)
})
}
【问题讨论】:
-
"由于 ES6 不应该是 [...] 之类的吗??" - 不,为什么会这样?
processReq仍然是实例的方法。 -
我更新了我的问题
-
更新后,
processReq仍然是实例方法,而不是局部变量。局部变量仅使用关键字var和let声明,您使用ES6 语法如何定义this引用的方法
标签: reactjs ecmascript-6 fetch-api es6-class