Javascript 在获取数据后对设置状态的问题作出反应
我正在创建一个表单,我想在初始加载时加载数据 我已经安装了Mount来调用我的函数fetchClaims。我收到返回的结果,我可以控制台日志它。我不能做的是用它更新我的状态,这样我就可以在我的表单中使用它Javascript 在获取数据后对设置状态的问题作出反应,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我正在创建一个表单,我想在初始加载时加载数据 我已经安装了Mount来调用我的函数fetchClaims。我收到返回的结果,我可以控制台日志它。我不能做的是用它更新我的状态,这样我就可以在我的表单中使用它 componentDidMount() { this.onInit(this.props); } onInit = props => props .fetchClaims() .then(results => console.log('results =
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: {},
};
这个州看起来像
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: {},
};
我想将Claims数组填充到Claims in state中,然后映射到它 尝试在第一个控制台日志之后返回值,并在设置状态时修复参数名称
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)));
我重写了您的代码,请尝试以下操作:
onInit = props => props.fetchClaims()
.then(results => {
console.log("results = " + JSON.stringify(results))
this.setState( { results }, () => console.log("results state = " + JSON.stringify(this.state) ))
})
试试这个你可能会得到的
onInit = props => props.fetchClaims()
.then(
res =>res.json() )
.then(results => this.setState({results }, ()
=> console.log('results ', results )))
谢谢你,成功了。现在我在我的州有了这个,我相信我可以“映射”它。正确吗?@正确,可以在渲染函数中映射它。