我正在创建一个表单,我想在初始加载时加载数据。
我已经设置了Mount来调用我的函数fetchClaims。我收到了结果,我可以控制登录它。我不能做的是用它更新我的状态,以便我可以在我的表单中使用它。
componentDidMount() {
this.onInit(this.props);
}
onInit = props =>
props
.fetchClaims()
.then(results => console.log('results = ' + JSON.stringify(results)))
.then(claims => this.setState({ results }))
.then(results =>
console.log('results state = ' + JSON.stringify(this.state)),
);
结果数据类似于
results = {
type: 'CLAIMS_FETCHED',
claims: [
{
_id: '5b0d5b7f035a00f06003e6b8',
claimID: '123456',
claimDate: '2018-05-14T00:00:00.000Z',
carrier: 'BCBS NJ',
},
],
};
并且州看起来像
state = {
data: { email: '' },
loading: false,
errors: {},
fromdate: '',
todate: '',
claims: {},
results: {},
};
我想将声明数组填充到状态中的声明中,然后映射它。
答案 0 :(得分:1)
尝试在第一个控制台日志之后返回值,并在设置状态时修复参数名称。
onInit = props => props.fetchClaims()
.then(results => {
console.log("results = " + JSON.stringify(results));
return results;
})
.then(results => this.setState({ claims: results.claims }))
.then(() => console.log("results state = " + JSON.stringify(this.state)));
答案 1 :(得分:0)
我重写了你的代码,试试这个:
onInit = props => props.fetchClaims()
.then(results => {
console.log("results = " + JSON.stringify(results))
this.setState( { results }, () => console.log("results state = " + JSON.stringify(this.state) ))
})
答案 2 :(得分:0)
试试这个你可能会得到
onInit = props => props.fetchClaims()
.then(
res =>res.json() )
.then(results => this.setState({results }, ()
=> console.log('results ', results )))