反应数组映射中的访问setState

时间:2020-02-10 09:47:06

标签: javascript arrays reactjs

我正在尝试更新数组映射内的状态,但是它给我一个错误,指出setState不是this上的函数。我该如何实现?我的代码段如下

this.setState({
  isLoading: true
});

this.state.questions.map(function(key, value) {
  if (key.id === undefined) {
    axios
      .post("/api/questions/create", key)
      .then(response => {
        this.setState({
          isLoading: true
        });
      })
      .catch(error => {});
  } else {
    axios
      .post("/api/questions/update/" + key.id, key)
      .then(response => {
        this.setState({
          isLoading: true
        });
      })
      .catch(error => {});
  }
});

2 个答案:

答案 0 :(得分:3)

请尝试在map中使用粗箭头语法。

更改此项:this.state.questions.map(function(key, value) {

对此:this.state.questions.map((key, value) => {


箭头函数表达式在语法上是常规函数表达式的紧凑替代形式,尽管没有与this,arguments,super或new.target关键字的绑定。

详细了解箭头功能here

答案 1 :(得分:1)

请查阅THIS,以获取import { endOfDay } from "date-fns" import { format } from "date-fns-tz" function getEndDate(date: Date, timeZone: string) { const endDate = endOfDay(new Date()) // endDate = Mon Feb 10 2020 23:59:59 GMT+0800 (Hong Kong Standard Time) {} const formatted = format(endDate, "yyyy-MM-dd'T'HH:mm:ssXXX", { timeZone }) // formatted = "2020-02-10T23:59:59+08:00" return formatted } 关键字的详细工作性质,以及Arrow Functions,以获取有关this函数的详细信息。希望文档有助于更好地理解。

=>