将先前状态保存到ReactJS中的一个数组

时间:2019-01-10 01:45:30

标签: javascript arrays string reactjs

我有一个可从REST API获取帐户中可用资金的类。此号码处于保存状态。

我需要创建一个单独的状态,在其中存储所有状态更改的数组

例如,我的状态availableFunds为:86 所以我想我的availableFundsArray返回:[86]

如果我的州availableFunds将数字更改为例如:60 所以我想我的availableFundsArray返回:[86, 60]

class AvailableFunds extends Component {
  constructor() {
    super();

    this.state = {
      availableFunds: [],
      availableFundsArray: [],
    };
  }

componentDidMount() {
    this.Auth.availableFunds(this.props.id)
      .then(res => {
        if (res) {
          this.setState({
            availableFunds: res.reduce(
              (accumulator, currentValue) =>
                accumulator + currentValue.available_funds,
              0,
            ),
          });
        }
      })
      .catch(err => {
        console.log(err);
      });
  }

2 个答案:

答案 0 :(得分:1)

设置setState时,请引用状态的前一种形式并将其添加到其中。

让availableFunds为数字而不是数组。

let funds = [this.state.availableFunds];

funds.push(this.state.availableFunds)

this.setState({
    availableFundsArray: funds
})

答案 1 :(得分:0)

在if语句中,您可以在 setState 之前计算可用资金,并使用该变量使用prevState更新状态,如下所示

this.Auth.availableFunds(this.props.id)
      .then(res => {
        if (res) {
            const amount = res.reduce((accumulator, currentValue) => accumulator + currentValue.available_funds, 0, )

            this.setState( prevState => {
            return {
                availableFunds: amount,
                availableFundsArray: [...prevState.availableFundsArray, amount]
            }
          });
        }
      })
     .catch(err => {
        console.log(err);
      });