Javascript 在获取数据后对设置状态的问题作出反应

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 =

我正在创建一个表单,我想在初始加载时加载数据

我已经安装了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: {},
};
这个州看起来像

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 )))

谢谢你,成功了。现在我在我的州有了这个,我相信我可以“映射”它。正确吗?@正确,可以在渲染函数中映射它。